Específicamente, el PRIMEGAME de Conway .
Este es un algoritmo ideado por John H. Conway para generar números primos usando una secuencia de 14 números racionales:
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
Por ejemplo, F es la fracción 77/29
.
Así es como el algoritmo encuentra los números primos. Comenzando con el número 2
, encuentre la primera entrada en la secuencia que, cuando se multiplica, produce un número entero. Aquí es M
, 15/2
que produce 15
. Luego, para ese número entero 15
, encuentre la primera entrada en la secuencia que cuando se multiplica produce un número entero. Ese es el último N
, o 55/1
, que rinde 825
. Escribe la secuencia correspondiente. (El astuto entre ustedes puede reconocer esto como un programa FRACTRAN ).
Después de algunas iteraciones, obtendrá lo siguiente:
2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, 910, 170, 156, 132, 116, 308, 364, 68, 4 ...
Tenga en cuenta que el último elemento de la lista es 4
, o 2^2
. ¡Mira nuestro primer número primo (el 2
exponente) generado con este algoritmo! Finalmente, la secuencia tendrá el siguiente aspecto:
2 ... 2^2 ... 2^3 ... 2^5 ... 2^7 ... etc.
Por lo tanto, arrojando los números primos. Este es OEIS A007542 .
El reto
Dado un número de entrada n
, ya sea cero o uno indexado (su elección), puede generar los primeros n
números de esta secuencia o generar el n
número th de esta secuencia.
Ejemplos
Los siguientes ejemplos muestran el n
término th de la secuencia indexada a cero.
n output
5 2275
19 4
40 408
Reglas
- Si corresponde, puede suponer que la entrada / salida se ajustará al tipo entero nativo de su idioma.
- La entrada y salida se pueden dar por cualquier método conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
408.0
en lugar de 408
por ejemplo.