Вывод простых чисел на Oracle

Задача с Hackerrank:

Напишите запрос выводящий простые числа меньшие или равные 1000.

Пример вывода постых чисел меньших или равных 10:

Решение

Разложим задачу на подзадачи:

  1. Вывести список чисел от 2 до 1000
  2. Отфильтровать из списка только простые числа
  3. Объединить результат в одну строку

Для вывода списка чисел воспользуемся connect by

В результате появляется список строк с числами от 2 до 1000. Теперь нужно оставить только простые числа. Простые числа делятся только на единицу и на самих себя. Проверим это с помощью подзапроса. Так как в подзапросе понадобится тот же список чисел то вынесем его в with:

И добавим подзапрос:

Теперь осталось только соединить строки в одну. Для этого воспользуемся функцией listagg:

В результате получаем:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *