Со времен Евклида мы знали, что простых чисел бесконечно много. Аргумент от противного: если существует лишь конечное число, скажем , , то обязательно не делится на любой из этих простых чисел, поэтому его простые множители должны дать новое простое число , которое не было в списке. Таким образом, предположение, что существуют только конечно простые числа, неверно.
Теперь давайте предположим, что является единственным простым числом. Метод сверху дает как новое (возможное) простое число. Повторное применение метода дает , а затем , затем 2 ⋅ 3 ⋅ 7 ⋅ 43 + 1 = 13 ⋅ 139 , так что 13 и 139 являются новыми простые числа и т. д. В случае, когда мы получаем составное число, мы просто берем наименьшее новое простое число. Это приводит к A000945 .
Вызов
Учитывая простой и целое число вычислить -го термина о последовательности , определенной следующим образом :
Эти последовательности известны как последовательности Евклида-Маллина .
Примеры
Для :
1 2
2 3
3 7
4 43
5 13
6 53
7 5
8 6221671
9 38709183810571
Для ( A051308 ):
1 5
2 2
3 11
4 3
5 331
6 19
7 199
8 53
9 21888927391
Для ( A051330 )
1 97
2 2
3 3
4 11
5 19
6 7
7 461
8 719
9 5
(,0({q:)1+*/)^:
для 15 байтов, возвращая последовательность доn
(с нулевым индексированием)verb conj
произвел наречие .^:
, а затем , что становится глаголом , который относится к правой арг. Я думаю, что это происходит грамматически.Python 2 , 56 байт
Попробуйте онлайн!
комментарии
Попробуйте онлайн!
источник
int(input())
противном случаеi
этоstr
?input()
всегда возвращает строки. В Python 2input()
пытается оценить вход. Я использую Python 2 в этом случае, потому что полученный код немного короче. Для реального кода вы должны попытаться использовать Python 3, так как это более новая и поддерживаемая версия Python.Желе , 8 байт
Полная программа (с нулевым индексированием), принимающаяп0 а также N который печатает желе представление списка п0 в пN включительно. (Как диадическая ссылка,
n=0
нам будет возвращено целое число, а не список.)Попробуйте онлайн!
Как?
источник
05AB1E , 8 байтов
Первый входN второе простое п ,
Попробуйте онлайн или еще несколько тестов (в тестовом наборе отсутствуют тесты дляn ≥ 9 , потому что для р = 2 а также р = 5 встроенный
f
занимает слишком много времени).Объяснение:
источник
λλP>fW
(6 байт) с выводом в виде бесконечного списка иλ£λP>fW
(7 байт) для первого£
но для последнего элемента!£
но для последнего элемента! », Как.£
? ;) РЕДАКТИРОВАТЬ: На самом деле, это не работает точно так же, как£
для списков .. используя список, как[1,2]
с.£
результатами в двух свободных элементах с последними 1 и 2 элементами (то есть12345
становится[5,45]
вместо[45,3]
или[3,45]
, с12S.£
) ..λ.£
должно работать. Я использовал флаг как в дополнительной функции, связанной сλ
(см. Этот разговор с Аднаном ). Я в основном хочу некоторый флаг,è
такой, чтобы при запускеλè...}
он генерировал n-й элемент, а не бесконечный поток (точно так же, какλ£
работал бы для генерации первых n элементов).£
рекурсивную среду. Да, тогдаλ.£
действительно не сработает, мой плохой. Хороший 6-байтовый независимо. Теперь вам просто нужно дождаться ответа @flawr , разрешено это или нет (возможно, так и есть).Japt ,
1211 байтИзо всех сил пытался сделать это правильно, поэтому, возможно, пропустил что-то, что можно сыграть в гольф.
Принимает
n
в качестве первого ввода иp1
, в качестве одноэлементного массива, в качестве второго. Возвращает первыеn
условия. Изменитеh
на,g
чтобыn
вместо этого возвращать th-индексированный термин.Попытайся
источник
Сетчатка , 56 байт
Попробуйте онлайн! Принимает входные данные как число новых терминов, добавляемых в первой строке, и начальный (ие) термин (ы) во второй строке. Примечание: становится очень медленным, так как использует унарную факторизацию, поэтому ему нужно создать строку соответствующей длины. Объяснение:
Замените запятые в начальных терминах на
*
s и добавьте a*
. Это создает выражение Retina для строки длины произведения значений.Повторите цикл количество раз, данное первым входом.
Временно замените число в первой строке на a
$
и добавьте a_
ко второй строке, затем оцените результат как программу Retina, добавив, таким образом, строку_
s длиной на 1 больше, чем произведение значений.Найдите наименьший нетривиальный множитель числа в десятичном виде и добавьте
*
готовый к следующему циклу.Удалить итерацию.
Удалить последнее
*
.Заменить оставшиеся
*
s на,
s.источник
JavaScript (Node.js) , 54 байта
Попробуйте онлайн!
Ungolfed
источник
bash + GNU coreutils, 89 байт
TIO
источник
Ruby 2.6, 51 байт
(2..)
бесконечный диапазон, начинающийся с 2, пока не поддерживается в TIO.Это рекурсивная функция, которая принимает начальное значение
s
(может быть простым или составным), возвращает его, когда n = 0 (правка: обратите внимание, что это означает, что оно имеет нулевой индекс), возвращает наименьшее число,l
которое больше 1, и делит,-(s+1)
когда n = 1, а в противном случае рекурсивно сs=l*s
иn=n-1
.источник
(2..)
на2.step
(всего на 1 байт больше), чтобы он работал на TIO, и все было выключено одним. Попробуйте онлайн!APL (Dyalog Extended) , 15 байт
Это довольно простая реализация алгоритма, использующая встроенные очень полезные простые факторы Extended
⍭
. Попробуйте онлайн!объяснение
источник
Pari / GP , 47 байт
Попробуйте онлайн!
источник
Stax , 9 байт
Запустите и отладьте его
Берет и (с нулевым индексом) для ввода. Производит .
p0
n
pn
источник
C (gcc) ,
5453 байтаПопробуйте онлайн!
-1 байт благодаря возрастанию
источник
Perl 6 ,
3332 байта-1 байт благодаря nwellnhof
Попробуйте онлайн!
Блок анонимного кода, который принимает число и возвращает ленивый список.
Объяснение:
источник
-+^[*](@_)
сохраняет байт.Haskell , 49 байтов
Попробуйте онлайн!
Возвращает бесконечную последовательность в виде отложенного списка.
Объяснение:
источник