В частности, PRIMEGAME Конвея .
Это алгоритм, разработанный Джоном Х. Конвеем для генерации простых чисел с использованием последовательности из 14 рациональных чисел:
A B C D E F G H I J K L M N
17 78 19 23 29 77 95 77 1 11 13 15 15 55
-- -- -- -- -- -- -- -- -- -- -- -- -- --
91 85 51 38 33 29 23 19 17 13 11 14 2 1
Например, F - это дробь 77/29
.
Итак, вот как алгоритм находит простые числа. Начиная с числа 2
, найдите первую запись в последовательности, которая при умножении дает целое число. Вот это M
, 15/2
, которая производит 15
. Затем для этого целого числа 15
найдите первую запись в последовательности, которая при умножении дает целое число. Это последний N
, или 55/1
, который дает 825
. Запишите соответствующую последовательность. (Проницательный из вас может распознать это как ФРАКТРАН программу .)
После нескольких итераций вы получите следующее:
2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, 910, 170, 156, 132, 116, 308, 364, 68, 4 ...
Обратите внимание, что последний элемент в списке 4
, или 2^2
. Вот наше первое простое число ( 2
показатель степени), сгенерированное этим алгоритмом! В итоге последовательность будет выглядеть следующим образом:
2 ... 2^2 ... 2^3 ... 2^5 ... 2^7 ... etc.
Таким образом, получая простые числа. Это OEIS A007542 .
Соревнование
Для заданного числа ввода n
, либо с нулями, либо с одним индексом (на ваш выбор), либо выведите первые n
числа этой последовательности, либо выведитеn
номер этой последовательности.
Примеры
Приведенные ниже примеры выводят n
th-й член последовательности с нулевым индексом.
n output
5 2275
19 4
40 408
правила
- Если применимо, вы можете предположить, что ввод / вывод будет соответствовать целочисленному типу вашего языка.
- Вход и выход могут быть заданы любым удобным способом. .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
408.0
вместо 408
например.