Ich bin überrascht, dass diese Herausforderung nicht schon da ist, wie es so offensichtlich ist. (Oder ich bin überrascht, dass ich es nicht gefunden habe, und jeder wird es als Duplikat markieren.)
Aufgabe
Berechnen Sie bei einer nicht negativen ganzen Zahl die Summe der ersten Primzahlen und geben Sie sie aus.n
Beispiel 1
Für sind die ersten fünf Primzahlen:
- 2
- 3
- 5
- 7
- 11
Die Summe dieser Zahlen ist , daher muss das Programm ausgeben .28
Beispiel # 2
Für sind die Primzahlen "erste Null" keine. Und die Summe ohne Zahlen ist - natürlich - .0
Regeln
- Sie können integrierte Funktionen verwenden, um beispielsweise zu überprüfen, ob eine Zahl eine Primzahl ist.
- Das ist Code-Golf , also gewinnt die niedrigste Anzahl von Bytes in jeder Sprache!
Antworten:
6502 Maschinencode- Routine, 75 Bytes
Erwartet einen Zeiger auf einen temporären Speicher in
$fb
/$fc
und die Anzahl der Primzahlen, die summiert werden sollen$2
. Liefert die Summe inA
(dem Akku-Register).Nie irgendwelche Prime Checks im 6502 Maschinencode gemacht, also kommt es endlich;)
Beachten Sie, dass dies bei Eingaben> = 14 zu falschen Ergebnissen führt. Aufgrund des Überlaufs arbeitet der Code mit dem "natürlichen" Nummernbereich der 8-Bit-Plattform, der
0 - 255
für vorzeichenlos ist .Kommentierte Demontage
Beispiel C64 Assembler Programm mit der Routine:
Online-Demo
Code in ca65- Syntax:
quelle
Python 2 , 49 Bytes
Verwendet den Satz von Wilson (wie von xnor in die Site eingeführt, glaube ich hier )
Probieren Sie es online!
Die Funktion( n - 1 ) ! ≡ - 1 ( modn )
f
ist rekursiv, mit einer anfänglichen Eingabe vonn
und einem Ende, wennn
Null erreicht wird, was diese Null ergibt (aufgrund der Logikand
);n
wird immer dann dekrementiert, wennt
eine Testnummer , die sich mit jedem Anruf erhöhtf
, eine Primzahl ist. Der Haupttest ist dann, ob für das wir ein Quadrat der Fakultät in verfolgen .p
quelle
Gelee , 4 Bytes
Mein erstes Jelly-Programm
Probieren Sie es online!
quelle
ÆN€S
das auch geht.05AB1E , 3 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
Java 8, 89 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
Perl 6 , 31 Bytes
Probieren Sie es online!
Das
is-prime
eingebaute ist leider lang.quelle
J , 8 Bytes
Probieren Sie es online!
quelle
Brachylog ,
87 BytesProbieren Sie es online!
1 Byte dank @sundar gespeichert.
Erläuterung
quelle
~lṗᵐ≠≜+
scheint zu funktionieren, für 7 Bytes (Auch ich bin neugierig, warum es Ausgabe 2 * Eingabe + 1 gibt, wenn ohne die Kennzeichnung ausgeführt.)[2,+inf)
offensichtlich enthalten sein muss. Daher weiß es, dass die Summe von 5 Primzahlen (wenn die Eingabe 5 ist) mindestens sein muss10
, und es weiß teilweise, dass, da die Elemente unterschiedlich sein müssen, sie nicht alle 2 sein können, es also mindestens ist11
. TL; DR-Implementierung der impliziten Kennzeichnung ist nicht stark genug.Schale , 4 Bytes
Probieren Sie es online!
Σ↑
quelle
İ€
ist endlich.Attache , 10 Bytes
Probieren Sie es online!
ho hum
quelle
Retina , 41 Bytes
Probieren Sie es online! Ich wollte weiter 1 hinzufügen, bis ich
n
Primzahlen gefunden hatte, aber ich konnte nicht herausfinden, wie das in Retina geht, und griff auf eine verschachtelte Schleife zurück. Erläuterung:Beginnen Sie mit 1.
Loop-
n
Zeiten.Kopieren Sie den vorherigen Wert und erhöhen Sie ihn.
Erhöhen Sie es weiter, während es zusammengesetzt ist. (Der
)
schließt die äußere Schleife.)Löschen Sie das Original
1
.Summieren und in Dezimalzahl umwandeln.
quelle
MATL , 4 Bytes
Probieren Sie es online!
Erläuterung:
quelle
PHP, 66 Bytes
benutze wieder meine eigene Prime-Funktion ...
Laufen Sie als Pipe mit
-nr
oder probieren Sie es online aus .Nervenzusammenbruch
quelle
for(;$argn;$i-1||$s+=$n+!$argn--)for($i=++$n;--$i&&$n%$i;);echo$s;
Haskell , 48 Bytes
Probieren Sie es online!
\p-> all((>0).mod p)[2..p-1]
True
quelle
C (gcc) , 70 Bytes
Probieren Sie es online!
quelle
n=s
stattdessen vorreturn s
C, C ++, D:
147 -142 Bytes5 Byte Optimierung für C und C ++:
-2 Bytes dank Zacharý
p
testet, ob eine Zahl eine Primzahl ist,f
summiert dien
ersten ZahlenCode zum Testen:
C / C ++:
D Optimierte Antwort von Zacharý ,
133131 BytesD hat ein Golf-Template-System
quelle
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;}
. Auch das C / C ++ / D kannint 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;}
(wie bei der C / C ++ - Optimierung, nur Anpassung des Algorithmus abit){c+=v;--n;}
seinc+=v,--n;
?int
s zurückgekehrt):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
statti<a
und entfernen Sieif(a<4)...
Japt
-x
, 11 BytesProbieren Sie es online!
Mehrere Bytes dank einer neuen Sprachfunktion eingespart.
Erläuterung:
quelle
JavaScript (ES6), 55 Byte
Probieren Sie es online!
quelle
Stax , 6 Bytes
Führen Sie es aus und debuggen Sie es
Erläuterung:
quelle
APL (Dyalog Unicode) , 7 + 9 = 16 Bytes
Probieren Sie es online!
9 zusätzliche Bytes zum Importieren der
pco
(und aller anderen) Dfn:⎕CY'dfns'
Wie:
quelle
import X
(newline)X.something()
in python wird mit der newline gezählt.Ruby, 22 + 7 = 29 Bytes
Laufen mit
ruby -rprime
(+7)quelle
Pari / GP , 20 Bytes
Probieren Sie es online!
quelle
JAEL , 5 Bytes
Erklärung (automatisch generiert):
quelle
Python 2 ,
63595651 BytesProbieren Sie es online!
Gerettet:
Ohne Bibliotheken:
Python 2 , 83 Bytes
Probieren Sie es online!
quelle
f=lambda n:n and prime(n)+f(n-1)
spart fünf (es könnte auch weiter golfbar sein)Pyke , 4 Bytes
Probieren Sie es hier aus!
quelle
CJam , 21 Bytes
Probieren Sie es online!
quelle
F #, 111 Bytes
Probieren Sie es online!
Seq.initInfinite
Erstellt eine unendlich lange Sequenz mit einer Generatorfunktion, die als Parameter den Elementindex verwendet. In diesem Fall ist die Generatorfunktion nur die Identitätsfunktionid
.Seq.filter
Wählt nur die durch die unendliche Folge erzeugten Primzahlen aus.Seq.take
Nimmt die erstenn
Elemente in dieser Reihenfolge.Und
Seq.sum
fasst sie schließlich zusammen.quelle
cQuents , 3 Bytes
Probieren Sie es online!
Erläuterung
quelle
Z
stattz
MEIN , 4 Bytes
Probieren Sie es online!
Ich bereue immer noch keine implizite Eingabe / Ausgabe in dieser Garbage-Sprache, sonst wären es zwei Bytes gewesen.
⎕
= EingabeṀ
= 1st ... nth prime inclusiveΣ
= Summe↵
= Ausgabequelle
APL (NARS), 27 Zeichen, 54 Byte
{¯2π⍵} hier würde die n Primzahl zurückgeben, die sich von 2 unterscheidet. Also würde {⍵ = 1: 2⋄¯2π⍵-1} die n Primzahl 2 in der Zählung darin zurückgeben ...
quelle