Dado um número n, imprimir o enésimo privilegiada número Fermat, onde os números de Fermat são da forma 2 2 k +1. Este código deve teoricamente obra para qualquer n (ou seja, não codificá-lo), embora não se espera para terminar para n> 4. (Deve não voltar 4294967297 para n = 5, como 4294967297 não é um número primo.)
Observe que, embora todos os números primos Fermat tenham a forma 2 2 n +1, nem todos os números da forma 2 2 n +1 são primos. O objetivo deste desafio é retornar o n-ésimo primo.
Casos de teste
0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537
Regras
- As brechas padrão não são permitidas.
- A indexação 0 e a indexação 1 são aceitáveis.
- Isso é código-golfe , vitórias mais baixas na contagem de bytes.
Related: n-gons construtíveis
2^(2^n) + 1
, onden
está a entrada? Isso está alinhado com seus casos de teste (que sabemos que já são excelentes, portanto não há necessidade de verificar). E você não espera que o programa funcione onde n> 4 (en = 5 é o primeiro não primo).n=1:4
. Todos os números primos fermat são da forma2^2^n+1
, mas isso não significa que todos os números da forma2^2^n+1
sejam realmente primos. Este é o cason=1:4
, mas nãon=5
por exemplo.n
e a saída deve estar no formato2^(2^n)+1
. Se você usar variáveis diferentes para a entrada e o expoente, alguma confusão poderá ser reduzida. Também pode ajudar se você declarar explicitamente que "n = 5 não precisa ser produzido em tempo razoável, mas não deve ser produzido 4294967297" #Respostas:
Python 2 , 53 bytes
Experimente online!
Usa o teste de Pépin .
Python 2 , 54 bytes
Experimente online!
fonte
Geléia ,
1311 bytesUsa indexação baseada em 1.
Experimente online!
Como funciona
fonte
ṛ
para limpar o resultado ... TILÆẸ
vez de2*
para um único inteiro ... TILPerl 6 ,
4542 bytesTente
Tente
Expandido:
fonte
Mathematica, 56 bytes
Experimente online!
fonte
Pitão , 14 bytes
Experimente online!
Usa indexação 1.
fonte
Pitão , 14 bytes
Experimente online.
Idéia principal "emprestada" da resposta do xnor em outra pergunta
fonte
05AB1E , 8 bytes
Código:
Os resultados são indexados em 1.
Usa a codificação 05AB1E . Experimente online!
Explicação:
fonte
Javascript,
1246 bytesA maior parte do código é utilizada pela verificação básica, que é daqui .
fonte
Dyalog APL (29 caracteres)
Estou quase certo de que isso pode ser melhorado.
Esta é uma função recursiva que verifica o número de divisores de 1 + 2 ^ 2 ^ ⍵, onde ⍵ é o argumento correto da função. Se o número de divisores for 2, o número será primo e o retornará; caso contrário, ele chamará a função novamente com ⍵ + 1 como argumento correto.
Exemplo
Aqui eu chamo a função em cada um dos ⍳4 (os números 1-4). Aplica-o a todos os números por sua vez.
fonte
Haskell , 61 bytes
Experimente online!
Índice baseado em 0
Explicação
fonte