Dado un número n, imprima el enésimo primer número de Fermat, donde los números de Fermat tienen la forma 2 2 k +1. Este código debe teóricamente trabajo para cualquier n (es decir, no se hardcode), aunque no se espera que interrumpir para n> 4. (Debe no volver 4294967297 para n = 5, como 4294967297 no es un número primo.)
Tenga en cuenta que si bien todos los números primos de Fermat son de la forma 2 2 n +1, no todos los números de la forma 2 2 n +1 son primos. El objetivo de este desafío es devolver el enésimo primer.
Casos de prueba
0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537
Reglas
- Las lagunas estándar no están permitidas.
- La indexación 0 y la indexación 1 son aceptables.
- Este es el código de golf , el menor recuento de bytes gana.
Relacionado: n-gons construibles
2^(2^n) + 1
, dónden
está la entrada? Esto se alinea con sus casos de prueba (que sabemos que ya son primos, por lo que no hay necesidad de verificar). Y no espera que el programa funcione donde n> 4 (yn = 5 es el primer no primo).n=1:4
. Todos los primos de fermat son de la forma2^2^n+1
, pero eso no significa que todos los números de la forma2^2^n+1
sean realmente primos. Este es el cason=1:4
, pero non=5
por ejemplo.n
y la salida debe ser de la forma2^(2^n)+1
. Si usa diferentes variables para la entrada y el exponente, entonces podría reducirse cierta confusión. También podría ayudar si declara explícitamente que "n = 5 no necesita salir en un tiempo razonable, pero no debe salir 4294967297"Respuestas:
Python 2 , 53 bytes
Pruébalo en línea!
Utiliza la prueba de Pépin .
Python 2 , 54 bytes
Pruébalo en línea!
fuente
Jalea ,
1311 bytesUtiliza indexación basada en 1.
Pruébalo en línea!
Cómo funciona
fuente
ṛ
para borrar el resultado ... TILÆẸ
lugar de2*
un solo entero ... TILPerl 6 ,
4542 bytesIntentalo
Intentalo
Expandido:
fuente
Mathematica, 56 bytes
Pruébalo en línea!
fuente
Pyth , 14 bytes
Pruébalo en línea!
Utiliza 1-indexación.
fuente
Pyth , 14 bytes
Probar en línea
Idea principal "prestada" de la respuesta de xnor en otra pregunta
fuente
05AB1E , 8 bytes
Código:
Los resultados están indexados en 1.
Utiliza la codificación 05AB1E . Pruébalo en línea!
Explicación:
fuente
Javascript,
1246 bytesLa mayor parte del código está ocupado por la verificación principal, que es desde aquí .
fuente
Dyalog APL (29 caracteres)
Estoy casi seguro de que esto se puede mejorar.
Esta es una función recursiva que verifica el número de divisores de 1 + 2 ^ 2 ^ ⍵, donde ⍵ es el argumento correcto de la función. Si el número de divisores es 2, el número es primo y lo devuelve; de lo contrario, vuelve a llamar a la función con ⍵ + 1 como argumento correcto.
Ejemplo
Aquí llamo a la función en cada uno de ⍳4 (los números 1-4). Se aplica a cada número por turno.
fuente
Haskell , 61 bytes
Pruébalo en línea!
Índice basado en 0
Explicación
fuente