Schreiben Sie den kürzesten Code, um die Summe der Primzahlen zwischen a
und b
(einschließlich) zu ermitteln.
Eingang
a
undb
kann von der Kommandozeile oder stdin genommen werden (Leerzeichen getrennt)- Angenommen,
1 <= a <= b <=
10 8
Ausgabe Drucken Sie einfach die Summe mit einem Zeilenumbruch aus.
Bonuspunkte
- Wenn das Programm mehrere Bereiche akzeptiert (geben Sie eine Summe in jede Zeile ein), erhalten Sie zusätzliche Punkte. :)
Antworten:
J,
413219 Zeichen:Aktualisieren
(einfaches Sieb)
z.B
Bisherige
z.B:
quelle
Mathematica 7 (31 Zeichen im Klartext)
Wenn eine PARI / GP-Lösung zulässig ist, gilt Folgendes:
quelle
Range[a,b]~Select~PrimeQ//Tr
.C (117 einschließlich NL)
quelle
C # (294 Zeichen):
quelle
int
slong
und ein paar Zeichen sparen:long a=...,b=...,t=0,i=a;for(;i<=b;i++)
. Das bringt es auf 288 Zeichen. Sie können auchp
eine lange zurückgeben lassen und einfach entweder0
oder zurückgebenn
und die Schleife auf kürzent+=p(i)
. Dann also 277 Zeichen.PARI / GP (44 Zeichen)
quelle
BASH Shell
47 Zeichen
Bearbeiten: Gerade wurde erkannt, dass die Summe überläuft und als Double gezwungen wird.
5250 ZeichenHier ist eine etwas längere Lösung, behandelt aber auch Überläufe
quelle
$
).tr
fügt am Ende ein abschließendes '+' hinzu, wodurch mehr Zeichen benötigt werden.awk NF==2{print\$2}
um ein Byte für die längere Lösung zu speichern (wir werden nicht versehentlich auf eine Klammererweiterung stoßen, weil es keine Kommas oder..
s gibt).C #, 183 Zeichen
Dies wäre viel kürzer, wenn es nicht nach 1 suchen müsste oder wenn es einen besseren Weg gäbe, ... In einem besser lesbaren Format:
quelle
s -= i;
weil das nur syntaktischer Zucker ist, aufs = s - i;
den versucht wird,s
vor dem Festlegen zuzugreifen )Haskell (80)
s 1 100 == 1060
quelle
Ruby 1,9, 63 Zeichen
Verwenden Sie wie folgt
Das Verwenden der
Prime
Klasse fühlt sich wie Schummeln an, aber da die Mathematica-Lösungen integrierte Hauptfunktionen verwendeten ...quelle
Perl, 62 Zeichen
Dieser verwendet die Primzahl Regex.
quelle
Normale Aufgabe (Python 3): 95 Zeichen
Bonusaufgabe (Python 3): 119 Zeichen
quelle
Pari / GP (24 Zeichen)
Wie einige andere Lösungen, dies entspricht nicht unbedingt den Anforderungen, wie
a
undb
nicht von stdin oder die Befehlszeile zu lesen. Ich fand es jedoch eine gute Alternative zu den anderen Pari / GP- und Mathematica-Lösungen.quelle
Common Lisp: (107 Zeichen)
funktioniert nur für Startpunkte> = 1
quelle
APL (25 Zeichen)
Dies ist eine Modifikation einer bekannten Redewendung ( eine Erklärung finden Sie auf dieser Seite ) zum Generieren einer Liste von Primzahlen in APL.
Beispiel:
quelle
Faktor -> 98
Ausgabe:
quelle
R, 57 Zeichen
quelle
n=2
erforderlichscan()
? Wenn es sich bei der Eingabe um eine Standardeingabe handelt, gibt es ein Problem beim Auslassen des Arguments und der Annahme, dass ein zusätzliches <Eingabetaste> erforderlich ist?Japt , 7 Bytes
Probieren Sie es hier aus.
quelle
fj<space>
nützlich sein.Perl, 103 Zeichen
Es akzeptiert mehrere durch Leerzeichen getrennte Zeilen und gibt die Antwort für jede: D
quelle
In Q (95):
Beispielnutzung:
quelle
C # 302
quelle
Mathematica , 27
Vordefiniert
a
undb
:Als eine Funktion (auch 27):
quelle
R (85 Zeichen)
x=scan(nmax=2);sum(sapply(x[1]:x[2],function(n)if(n==2||all(n %% 2:(n-1)))n else 0))
Extrem ineffizient! Ich bin mir ziemlich sicher, dass es O (n ^ 2) Zeit braucht. Es kann Warnungen geben, dass ein Double zu einem Logical gezwungen werden soll.
Deobfuscated:
quelle
Python 3.1 (153 Zeichen):
quelle
from sys import*
2.r=True
->r=1
(bzw.0
fürFalse
) 3.if i%j==0and i!=j:r=0
4.if r:p+=[i]
5.print(sum(p))
(ersetzt die letzten 4 Zeilen)input()
, um kürzer zu sein. Können Sieif i%j<1and
stattdessen auch verwenden?GolfScript,
2724 BytesDies basiert auf @ w0lfs Primzahlalgorithmus .
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
quelle
Python: 110 Zeichen
quelle
Python, 133
Ein bisschen Zauberei:
quelle
y+=1
und stattdessenrange(y+1)
und verwenden([0]*-~y)[::i]
, um ein Byte zu speichern (Entfernen der Zeilenumbrüche). Und mit Python 3 können Sie verwendeninput()
, solange Sie nachher Klammern setzenprint
, also 4 Bytes entfernen, aber 1 hinzufügen. Es lohnt sich.133 Zeichen, Lua (keine eingebaute Funktion von is_prime)
Hier ist ein Beispiel, in dem ich die Zeile "print (i)" hinzugefügt habe, um alle gefundenen Primzahlen und die Summe am Ende derselben anzuzeigen: http://codepad.org/afUvYHnm .
quelle
PowerShell - 94
quelle
F # (141)
Ein Drittel des Codes dient zum Parsen der Eingabe.
quelle