Фон
Рассмотрим следующую последовательность ( A051935 в OEIS):
- Начните с термина .
- Найдите младшее целое число большее 2, такое, что 2 + n простое.
- Найдите наименьшее целое число больше n, такое, что 2 + n + n ' простое и т. Д.
Более формальное определение:
Первые несколько терминов последовательности (пожалуйста, обозначьте их как контрольные примеры):
2, 3, 6, 8, 10, 12, 18, 20, 22, 26, 30, 34, 36, 42, 44, 46, 50, 52, 60, 66, 72, 74, ...
задача
Ваша задача - сгенерировать эту последовательность любым из следующих способов:
- Выводим его условия на неопределенный срок.
- Для данного выведите a n ( n- й член, 0 или 1 проиндексированный).
- Для заданного выведите { a 1 , a 2 , … , a n } (первые n членов).
Вы можете соревноваться на любом языке программирования и можете принимать и выводить данные любым стандартным методом , при этом отмечая, что эти лазейки по умолчанию запрещены. Это код-гольф , поэтому выигрывает самое короткое представление (в байтах) для каждого языка .
Ответы:
Брахилог , 13 байт
Попробуйте онлайн!
Выходом является список первых n членов последовательности.
источник
Python 2 ,
6362 байтаПопробуйте онлайн!
источник
Желе ,
119 байтЭто полная программа, которая принимает n в качестве аргумента и печатает первые n членов последовательности.
Попробуйте онлайн!
Как это устроено
источник
05AB1E v2 , 10 байтов
Попробуйте онлайн!
Это работает только в устаревшей версии, переписать Elixir. Выводит бесконечный поток целых чисел. В основном тесте есть некоторые ошибки, которые были исправлены в последних коммитах, но еще не запущены на TIO. Это работает локально, хотя. Вот GIF его выполнения на моей машине, модифицированный для вывода первых нескольких терминов, а не всего потока.
Как это устроено
λ
λ
O
Генерирует самое низкое простое число, которое больше, чем указанная выше сумма.
Наконец, извлеките абсолютную разницу между простым числом, вычисленным выше, и первой копией суммы, вычисленной ранее (сумма всех предыдущих итераций).
Затем поток неявно печатается в STDOUT на неопределенный срок.
источник
Perl 6 , 45 байт
Попробуйте онлайн!
Возвращает ленивый список, который генерирует последовательность без конца.
Объяснение:
При этом используется оператор Sequence,
...
который определяет последовательность как:источник
Рубин
-rprime
, 34 байтаПопробуйте онлайн!
Выходы на неопределенный срок.
источник
JavaScript (ES6), 63 байта
Попробуйте онлайн!
источник
Пиф ,
1211 байтПопробуйте онлайн!
Сохранено 1 байт благодаря isaacg.
Создает первые
n
такие числа, используя индекс на основе 1..f
находит первыеk
целые числа, которые удовлетворяют определенному критерию, начиная с нуля. Здесь критерий состоит в том, что предыдущее простое число, которое мы вычислили;
, плюс текущее числоZ
, является простым (P
). Если это так, мы также обновляем последнее вычисленное простое число, используя короткое замыкание логики и функции (&
). К сожалению.f
, переменная по умолчанию -Z
это байт в обновлении.Хитрость, которую выяснил isaacg, состояла в том, чтобы сохранить отрицание последнего простого числа и проверить его на минус текущее значение. В Pyth это короче, так как проверка первичности перегружена: для положительных чисел он находит простую факторизацию, а для отрицательных чисел он определяет, является ли положительное значение числа простым.
Это более или менее означает:
источник
_+
с-
и+
с-
по -1 байт.MATL , 21 байт
Попробуйте онлайн!
Выходными данными являются первые n членов последовательности.
Объяснение:
Создает список простых чисел (с начальным 0) и в конце находит возвраты различий между последовательными простыми числами в списке.
источник
Haskell , 67 байт
Попробуйте онлайн!
(1#1)2 2
это функция, которая не требует ввода и выводит бесконечный списокстарый ответ:
Haskell ,
88837876 байтовТест на простоту взят из этого ответа и улучшен Кристианом Сиверсом (-2 байта).
-5 байт благодаря WW .
Попробуйте онлайн!
источник
^2
. Это изменит предикат от тестирования простое до тестирования простого или 4 , что не имеет значения в этом приложении.05AB1E (наследие) , 12 байтов
Попробуйте онлайн!
объяснение
Возможно несколько различных 12-байтовых решений.
Этот конкретный мог бы быть 10 байтов, если бы мы имели пригодную для использования переменную, инициализированную как 0 (вместо 1 и 2).
источник
Python 2 , 119 байт
Попробуйте онлайн!
Следующая простая функция f () взята из этого ответа .
Функция g () принимает неотрицательное целое число i и возвращает список всех элементов в последовательности до этого индекса.
источник
Python 2 ,
9998 байтПопробуйте онлайн!
1 байт спасибо мистеру Xcoder .
источник
k=s-~v
.Haskell ,
101 9997 байтФункция не
l
принимает аргументов и возвращает бесконечный список. Не такой короткий, как более прямой подход @ovs (и я, очевидно, украл некоторые части из их ответа), но, возможно, все еще пригоден для игры в гольф?Спасибо @ H.PWiz за -2 байта!
Попробуйте онлайн!
источник
Python 2 ,
8280 байтПопробуйте онлайн!
Это выводит n-й номер последовательности (на основе 0). Перемещая
print
в цикле, это можно изменить, чтобы выводить первыеn
элементы с той же учетной записью: попробуйте онлайн!источник
C (gcc) ,
10099 байтПопробуйте онлайн!
источник
Japt, 17 байт
Выводит
n
0-й член, 0-индексированный.Попытайся
источник