Hay una gran cantidad de funciones generadoras principales. Casi todos están construidos y se basan en el tamiz de Eratóstenes, la función de Möbius o el teorema de Wilson y, en general, no son factibles de calcular en la práctica. Pero también hay generadores, que tienen una estructura muy fácil y se encontraron por accidente.
En 2003, Stephen Wolfram exploró una clase de ecuaciones de recurrencia anidadas en un experimento de computadora en vivo en la Escuela de Verano de NKS. Un grupo de personas alrededor de Matthew Frank siguió con experimentos adicionales y descubrió una propiedad interesante de la simple recurrencia.
a(n) = a(n-1) + gcd(n,a(n-1))
con el valor inicial de a(1) = 7
. La diferencia a(n) - a(n-1) = gcd(n,a(n-1))
siempre parecía ser 1 o primo. Las primeras diferencias son ( OEIS A132199 ):
1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 3, 1, 5, 3, ...
Si solo omitimos los 1s, obtenemos la siguiente secuencia ( OEIS A137613 ):
5, 3, 11, 3, 23, 3, 47, 3, 5, 3, 101, 3, 7, 11, 3, 13, 233, 3, 467, 3, 5, 3,
941, 3, 7, 1889, 3, 3779, 3, 7559, 3, 13, 15131, 3, 53, 3, 7, 30323, 3, ...
Eric S. Rowland demostró la importancia de cada elemento en esta lista unos años más tarde. Como puede ver, los números primos se mezclan y algunos de ellos aparecen varias veces. También se ha demostrado que la secuencia incluye infinitos primos distintos. Además, se conjetura que aparecen todos los números primos impares.
Debido a que este generador principal no se construyó sino que simplemente se encontró por accidente, el generador principal se llama "natural". Pero tenga en cuenta que en la práctica este generador también es bastante inviable de calcular. Como resultado, un p principal aparece solo después de (p–3)/2
1s consecutivos. Sin embargo, implementar este generador principal será su tarea.
Reto:
Escriba una función o un programa que imprima los primeros n
elementos de la secuencia A137613
(la secuencia sin los 1). Puede leer el número de entrada a n >= 0
través de STDIN, argumento de línea de comandos, indicador de solicitud o argumento de función. Envíe los primeros n
elementos en cualquier formato legible a STDOUT, o devuelva una matriz o una lista con estos valores.
Este es el código de golf. Por lo tanto, el código más corto gana.
Tabla de clasificación:
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma. Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
donde N es el tamaño de su envío. Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
a(n)-a(n-1)
n
ser cero?
//
) y explíquelo en su envío. Si alguien no está de acuerdo contigo, siempre puedes editar tu publicación.