Je suis surpris que ce défi ne soit pas déjà là, car il est si évident. (Ou je suis surpris de ne pas l'avoir trouvé et n'importe qui le marquera comme doublon.)
Tâche
Étant donné un entier non négatif , calculez la somme des n premiers nombres premiers et sortez-la.
Exemple 1
Pour , les cinq premiers nombres premiers sont:
- 2
- 3
- 5
- sept
- 11
La somme de ces nombres est , donc le programme doit sortir 28 .
Exemple # 2
Pour , les "premiers zéro" premiers sont nuls. Et la somme d'aucun nombre est - bien sûr - 0 .
Règles
- Vous pouvez utiliser des fonctions intégrées, par exemple, pour vérifier si un nombre est premier.
- Il s'agit de code-golf , donc le plus petit nombre d'octets dans chaque langue gagne!
Réponses:
6502 routine de code machine , 75 octets
Attend un pointeur vers un stockage temporaire dans
$fb
/$fc
et le nombre de nombres premiers à résumer$2
. Renvoie la somme dansA
(le registre accu).Jamais fait quelques vérifications de base dans le code machine 6502, alors le voici enfin;)
Notez que cela commence à donner des résultats incorrects pour les entrées> = 14. Ceci est dû au débordement, le code fonctionne avec la plage de nombres "naturels" de la plate-forme 8 bits qui est
0 - 255
pour non signé .Démontage commenté
Exemple de programme assembleur C64 utilisant la routine:
Démo en ligne
Code dans la syntaxe ca65 :
la source
Python 2 , 49 octets
Utilise le théorème de Wilson , (tel qu'introduit sur le site par xnor, je crois ici )
Essayez-le en ligne!
La fonction(n−1)! ≡ −1(modn)
f
est récursive, avec une entrée initiale den
et une queue lorsqu'ellen
atteint zéro, ce qui donne ce zéro (en raison de la logiqueand
);n
est décrémenté chaque foist
qu'un nombre de test qui s'incrémente à chaque appel àf
est premier. Le premier test est alors de savoir si pour laquelle nous gardons une trace d'un carré de la factorielle en.p
la source
Gelée , 4 octets
Mon premier programme Jelly
Essayez-le en ligne!
la source
ÆN€S
ferait également.05AB1E , 3 octets
Essayez-le en ligne.
Explication:
la source
Java 8, 89 octets
Essayez-le en ligne.
Explication:
la source
Perl 6 , 31 octets
Essayez-le en ligne!
L'
is-prime
intégré est malheureusement long.la source
J , 8 octets
Essayez-le en ligne!
la source
Brachylog ,
87 octetsEssayez-le en ligne!
1 octet enregistré grâce à @sundar.
Explication
la source
~lṗᵐ≠≜+
semble fonctionner, pour 7 octets (Aussi, je suis curieux de savoir pourquoi il donne la sortie 2 * entrée + 1 si exécuté sans l'étiquetage.)[2,+inf)
évidemment. Par conséquent, il sait que la somme de 5 nombres premiers (si l'entrée est 5) doit être au moins10
, et il sait en partie que parce que les éléments doivent être différents, ils ne peuvent pas tous être 2 donc c'est au moins11
. L'implémentation TL; DR de la labellisation implicite n'est pas assez forte.Husk , 4 octets
Essayez-le en ligne!
Σ↑
la source
İ€
est finie.Attaché , 10 octets
Essayez-le en ligne!
ho hum
la source
Rétine , 41 octets
Essayez-le en ligne! Je voulais continuer à ajouter 1 jusqu'à ce que j'aie trouvé des
n
nombres premiers, mais je ne pouvais pas savoir comment faire cela dans Retina, j'ai donc eu recours à une boucle imbriquée. Explication:Commencez par 1.
n
Temps de boucle .Faites une copie de la valeur précédente et incrémentez-la.
Continuez à l'incrémenter pendant qu'il est composite. (Le
)
ferme la boucle extérieure.)Supprimez l'original
1
.Additionnez et convertissez en décimal.
la source
MATL , 4 octets
Essayez-le en ligne!
Explication:
la source
PHP, 66 octets
en utilisant à nouveau ma propre fonction principale ...
Exécuter en tant que pipe avec
-nr
ou l' essayer en ligne .panne
la source
for(;$argn;$i-1||$s+=$n+!$argn--)for($i=++$n;--$i&&$n%$i;);echo$s;
Haskell , 48 octets
Essayez-le en ligne!
\p-> all((>0).mod p)[2..p-1]
True
la source
C (gcc) , 70 octets
Essayez-le en ligne!
la source
n=s
place dereturn s
C, C ++, D:
147142 octetsOptimisation 5 octets pour C et C ++:
-2 octets grâce à Zacharý
p
teste si un nombre est un nombre premier,f
résume lan
premiers nombresCode utilisé pour tester:
C / C ++:
D Réponse optimisée de Zacharý ,
133131 octetsD a un système de gabarits golfy
la source
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;}
. En outre, le C / C ++ / D peut êtreint 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;}
(identique à l'optimisation C / C ++, en ajustant simplement l'algorithme){c+=v;--n;}
êtrec+=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
place dei<a
et supprimerif(a<4)...
Japt
-x
, 11 octetsEssayez-le en ligne!
Plusieurs octets enregistrés grâce à une nouvelle fonction de langue.
Explication:
la source
JavaScript (ES6), 55 octets
Essayez-le en ligne!
la source
Stax , 6 octets
Exécuter et déboguer
Explication:
la source
APL (Dyalog Unicode) , 7 + 9 = 16 octets
Essayez-le en ligne!
9 octets supplémentaires pour importer le
pco
Dfn (et tous les autres):⎕CY'dfns'
Comment:
la source
import X
(nouvelle ligne)X.something()
en python est compté avec la nouvelle ligne.Rubis, 22 + 7 = 29 octets
Courir avec
ruby -rprime
(+7)la source
Pari / GP , 20 octets
Essayez-le en ligne!
la source
JAEL , 5 octets
Explication (générée automatiquement):
la source
Python 2 ,
63595651 octetsEssayez-le en ligne!
Enregistré:
Sans libs:
Python 2 , 83 octets
Essayez-le en ligne!
la source
f=lambda n:n and prime(n)+f(n-1)
sauve cinq (il pourrait être golfable plus loin aussi)Pyke , 4 octets
Essayez-le ici!
la source
CJam , 21 octets
Essayez-le en ligne!
la source
F #, 111 octets
Essayez-le en ligne!
Seq.initInfinite
crée une séquence infiniment longue avec une fonction de générateur qui prend, comme paramètre, l'index de l'article. Dans ce cas, la fonction de générateur est juste la fonction d'identitéid
.Seq.filter
sélectionne uniquement les nombres créés par la séquence infinie qui sont premiers.Seq.take
prend le premiern
éléments de cette séquence.Et enfin, les
Seq.sum
résume.la source
cQuents , 3 octets
Essayez-le en ligne!
Explication
la source
Z
au lieu dez
MY , 4 octets
Essayez-le en ligne!
Regrettant toujours aucune entrée / sortie implicite dans ce langage poubelle, cela aurait été deux octets sinon.
⎕
= entréeṀ
= 1er ... nième prime inclusΣ
= somme↵
= sortiela source
APL (NARS), 27 caractères, 54 octets
{¯2π⍵} ici renverrait le n premier différent de 2. Donc {⍵ = 1: 2⋄¯2π⍵-1} renverrait le n premier 2 en nombre ...
la source