Estou surpreso que esse desafio ainda não esteja aqui, como é tão óbvio. (Ou fico surpreso por não conseguir encontrá-lo e alguém o marcará como duplicado.)
Tarefa
Dado um número inteiro não negativo , calcule a soma dos primeiros n números primos e faça a saída.
Exemplo 1
Para , os cinco primeiros números primos são:
- 2
- 3
- 5
- 7
- 11
A soma desses números é , portanto, o programa deve gerar 28 .
Exemplo 2
Para , os números primos do "primeiro zero" são nenhum. E a soma de nenhum número é - é claro - 0 .
Regras
- Você pode usar embutidos, por exemplo, para verificar se um número é primo.
- Isso é código-golfe , então o menor número de bytes em cada idioma vence!
Respostas:
Rotina de código de máquina 6502 , 75 bytes
Espera um ponteiro para algum armazenamento temporário no
$fb
/$fc
e o número de números primos a serem somados$2
. Retorna a soma emA
(o registro accu).Nunca fiz algumas verificações no código da máquina 6502, então aqui finalmente chega;)
Observe que isso começa a fornecer resultados incorretos para entradas> = 14. Isso ocorre por causa do estouro, o código funciona com o intervalo de números "natural" da plataforma de 8 bits, que é
0 - 255
para não assinado .Desmontagem comentada
Exemplo de programa assembler C64 usando a rotina:
Demonstração online
Código na sintaxe ca65 :
fonte
Python 2 , 49 bytes
Usa o teorema de Wilson , (como introduzido no site por xnor, acredito aqui )
Experimente online!
f
n
n
and
n
t
f
p
.fonte
Gelatina , 4 bytes
Meu primeiro programa Jelly
Experimente online!
fonte
ÆN€S
também faria isso.05AB1E , 3 bytes
Experimente online.
Explicação:
fonte
Java 8, 89 bytes
Experimente online.
Explicação:
fonte
Perl 6 , 31 bytes
Experimente online!
A
is-prime
built-in é, infelizmente, muito tempo.fonte
J , 8 bytes
Experimente online!
fonte
Braquilog ,
87 bytesExperimente online!
Guardou 1 byte graças a @sundar.
Explicação
fonte
~lṗᵐ≠≜+
parece trabalho, por 7 bytes (Além disso, eu sou curioso porque ele dá saída 2 * de entrada + 1 se executar sem a rotulagem.)[2,+inf)
obviamente. Portanto, ele sabe que a soma de 5 números primos (se a entrada for 5) deve ser pelo menos10
, e sabe parcialmente que, como os elementos devem ser diferentes, eles não podem ser todos 2, então é pelo menos11
. A implementação TL; DR da rotulagem implícita não é forte o suficiente.Casca , 4 bytes
Experimente online!
Gera o İ lista nfinite de p números rime, e calcula a soma do primeiroN (
Σ↑
)fonte
İ€
é finito.Anexo , 10 bytes
Experimente online!
ho hum
fonte
Retina , 41 bytes
Experimente online! Eu queria continuar adicionando 1 até encontrar
n
primos, mas não consegui descobrir como fazer isso na Retina, por isso recorri a um loop aninhado. Explicação:Comece com 1.
n
Tempos de loop .Faça uma cópia do valor anterior e aumente-o.
Continue incrementando enquanto é composto. (O
)
fecha o loop externo.)Elimine o original
1
.Soma e converta para decimal.
fonte
MATL , 4 bytes
Experimente online!
Explicação:
fonte
PHP, 66 bytes
usando minha própria função principal novamente ...
Execute como pipe
-nr
ou experimente online .demolir
fonte
for(;$argn;$i-1||$s+=$n+!$argn--)for($i=++$n;--$i&&$n%$i;);echo$s;
Haskell , 48 bytes
Experimente online!
Nota:0 , 1 também. Mas podemos contornar isso começando com2 , portanto, neste caso, é suficiente.
\p-> all((>0).mod p)[2..p-1]
não é uma verificação básica válida, pois éTrue
parafonte
C (gcc) , 70 bytes
Experimente online!
fonte
n=s
vez dereturn s
C, C ++, D:
147142 bytesOtimização de 5 bytes para C e C ++:
-2 bytes graças a Zacharý
p
testa se um número é primo,f
soma osn
primeiros númerosCódigo usado para testar:
C / C ++:
D Resposta otimizada por Zacharý ,
133131 bytesD tem um sistema de modelos de golfe
fonte
T p(T)(T a){if(a<4)return 1;for(T i=2;i<a;)if(!(a%i++))return 0;return 1;}T f(T)(T n){T c,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
. Além disso, a relação C / C ++ / D pode serint p(int a){if(a<4)return 1;for(int i=2;i<a;++i)if(!(a%i))return 0;return 1;}int f(int n){int c=0,v=1;while(n)if(p(++v)){c+=v;--n;}return c;}
(mesmo com a optimização C / C ++, simplesmente ajustando o algoritmo ABIT){c+=v;--n;}
bec+=v,--n;
?int
s):T p(T)(T a){T r=1,i=2;for(;i<a;)r=a%i++?r:0;return r;}T f(T)(T n){T c,v=1;while(n)if(p(++v))c+=v,--n;return c;}
a>3&i<a
vez dei<a
e remover #if(a<4)...
Japonês
-x
, 11 bytesExperimente online!
Salvou vários bytes graças a um novo recurso de idioma.
Explicação:
fonte
JavaScript (ES6), 55 bytes
Experimente online!
fonte
Stax , 6 bytes
Execute e depure
Explicação:
fonte
APL (Dyalog Unicode) , 7 + 9 = 16 bytes
Experimente online!
9 bytes adicionais para importar o
pco
(e todos os outros) Dfn:⎕CY'dfns'
Quão:
fonte
import X
(nova linha)X.something()
em python é contada com a nova linha.Ruby, 22 + 7 = 29 bytes
Corra com
ruby -rprime
(+7)fonte
Pari / GP , 20 bytes
Experimente online!
fonte
JAEL , 5 bytes
Explicação (gerada automaticamente):
fonte
Python 2 ,
63595651 bytesExperimente online!
Salvou:
Sem bibliotecas:
Python 2 , 83 bytes
Experimente online!
fonte
f=lambda n:n and prime(n)+f(n-1)
economiza cinco (que poderia ser golfable ainda demasiado)Pyke , 4 bytes
Experimente aqui!
fonte
CJam , 21 bytes
Experimente online!
fonte
F #, 111 bytes
Experimente online!
Seq.initInfinite
cria uma sequência infinitamente longa com uma função geradora que aceita, como parâmetro, o índice do item. Nesse caso, a função geradora é apenas a função de identidadeid
.Seq.filter
seleciona apenas os números criados pela sequência infinita que são primos.Seq.take
pega os primeirosn
elementos nessa sequência.E, finalmente,
Seq.sum
resume-os.fonte
cQuents , 3 bytes
Experimente online!
Explicação
fonte
Z
vez dez
MEU , 4 bytes
Experimente online!
Ainda lamentando nenhuma entrada / saída implícita nessa linguagem de lixo, teria sido de dois bytes caso contrário.
⎕
= entradaṀ
= 1º ... enésimo primo inclusivoΣ
= soma↵
= saídafonte
APL (NARS), 27 caracteres, 54 bytes
{¯2π⍵} aqui retornaria o n primo diferente de 2. Portanto, {⍵ = 1: 2⋄¯2π⍵-1} retornaria o n primo 2 na contagem ...
fonte