fundo
Considere a seguinte sequência ( A051935 no OEIS):
- Comece com o termo .
- Encontre o número inteiro mais baixo maior que modo que seja primo.2 2 + n
- Encontre o número inteiro mais baixo maior que modo que seja primo etc. n 2 + n + n ′
Uma definição mais formal:
Os primeiros termos da sequência são (consulte estes como casos de teste):
2, 3, 6, 8, 10, 12, 18, 20, 22, 26, 30, 34, 36, 42, 44, 46, 50, 52, 60, 66, 72, 74, ...
Tarefa
Sua tarefa é gerar essa sequência de qualquer uma das seguintes maneiras:
- Produza seus termos indefinidamente.
- Dado , ( termo, ou indexado).
- Dado , saída (primeiros termos).
Você pode competir em qualquer linguagem de programação e pode receber e fornecer saída por qualquer método padrão , observando que essas brechas são proibidas por padrão. Isso é código-golfe , então a submissão mais curta (em bytes) para todos os idiomas vence.
Respostas:
Braquilog , 13 bytes
Experimente online!
Saída é a lista dos primeiros n termos da sequência.
fonte
Python 2 ,
6362 bytesExperimente online!
fonte
Geléia ,
119 bytesEste é um programa completo que aceita n como argumento e imprime os primeiros n termos da sequência.
Experimente online!
Como funciona
fonte
05AB1E v2 , 10 bytes
Experimente online!
Isso funciona apenas na versão não herdada, reescrita pelo Elixir. Produz um fluxo infinito de números inteiros. Existem alguns bugs no teste principal que foram corrigidos nas confirmações mais recentes, mas ainda não estão ativos no TIO. Mas funciona localmente. Aqui está um GIF de sua execução na minha máquina, modificado para gerar os primeiros termos em vez de todo o fluxo.
Como funciona
Define uma sequência infinita recursiva com o caso base . A estrutura está entre os novos recursos muito interessantes do 05AB1E. Resumidamente, assume uma função , configurando para o argumento inteiro dado, neste caso .a ( n ) a ( 0 ) 22 a(n) a(0) 2
λ
Nesta parte do código,[a(0),a(1),…,a(n−1)]
λ
a função de é diferente. Já estando dentro de um ambiente recursivo, ele gera , a lista de todos os resultados anteriores. Então, resume-os.O
Duplique a soma para uso posterior e adicione à segunda cópia.a(n−1)
Gera o menor primo estritamente maior que a soma acima.
Por fim, recupere a diferença absoluta entre o prime calculado acima e a primeira cópia da soma calculada anteriormente (a soma de todas as iterações anteriores).
O fluxo é impresso implicitamente para STDOUT indefinidamente.
fonte
Perl 6 , 45 bytes
Experimente online!
Retorna uma lista lenta que gera a sequência sem fim.
Explicação:
Isso usa o operador Sequence,
...
que define a sequência como:fonte
Ruby
-rprime
, 34 bytesExperimente online!
Saídas indefinidamente.
fonte
JavaScript (ES6), 63 bytes
Retorna o termo , indexado em 1.nth
Experimente online!
fonte
Pyth ,
1211 bytesExperimente online!
Guardado 1 byte graças a isaacg.
Gera os primeiros
n
números desse tipo, usando um índice baseado em 1..f
localiza os primeirosk
números inteiros que atendem a um critério específico, começando do zero. Aqui, o critério é que o primo anterior que calculamos;
, mais o número atualZ
, seja primo (P
). Se for, também atualizamos o último primo calculado usando o comportamento em curto-circuito da lógica e da função (&
). Infelizmente.f
, a variável padrão éZ
que custa um byte na atualização.O truque que isaacg descobriu foi armazenar a negação do último primo e testar esse valor menos o valor atual. Isso é mais curto em Pyth, pois a verificação de primalidade está sobrecarregada: em números positivos encontra a fatoração primária, enquanto em números negativos determina se o valor positivo do número é primo.
Isso se traduz mais ou menos em:
fonte
_+
com-
e+
com-
a -1 byte.MATL , 21 bytes
Experimente online!
Saída são os primeiros n termos da sequência.
Explicação:
Constrói uma lista de números primos (com um 0 inicial) e, no final, encontra os retornos das diferenças entre números primos sucessivos na lista.
fonte
Haskell , 67 bytes
Experimente online!
(1#1)2 2
é uma função que não recebe entrada e gera uma lista infinita.resposta antiga:
Haskell ,
88837876 bytesO teste de primalidade é desta resposta e aprimorado por Christian Sievers (-2 bytes).
-5 bytes graças a WW .
Experimente online!
fonte
^2
. Isso mudará o predicado de teste é primo para teste é primo ou 4 , o que não importa neste aplicativo.05AB1E (herdado) , 12 bytes
Experimente online!
Explicação
Existem algumas soluções diferentes de 12 bytes possíveis.
Esse em particular poderia ter 10 bytes se tivéssemos uma variável utilizável inicializada como 0 (em vez de 1 e 2).
fonte
Python 2 , 119 bytes
Experimente online!
Próxima função Prime (f) tirada desta resposta .
A função g () pega um número inteiro não negativo ie retorna uma lista de todos os itens na sequência até esse índice.
fonte
Python 2 ,
9998 bytesExperimente online!
1 byte thx para o Sr. Xcoder .
fonte
k=s-~v
.Haskell ,
101 9997 bytesA função
l
não aceita argumentos e retorna uma lista infinita. Não é tão curto quanto a abordagem mais direta dos @ovs (e eu obviamente roubei algumas partes da resposta), mas talvez ainda seja um jogo de golfe?Obrigado @ H.PWiz por -2 bytes!
Experimente online!
fonte
Python 2 ,
8280 bytesExperimente online!
Isso gera o enésimo número da sequência (com base em 0). Ao mover o
print
loop, isso pode ser modificado para gerar os primeirosn
itens no mesmo número de conta: Experimente online!fonte
C (gcc) ,
10099 bytesExperimente online!
fonte
Japonês, 17 bytes
Emite o
n
th th termo, indexado em 0.Tente
fonte