Schreiben Sie ein Programm, das eine Eingabe (die eine Primzahl sein kann oder nicht) nimmt und die unmittelbare Primzahl auflistet, die darauf folgt und davor steht.
Beispieleingabe:
1259
Beispielausgabe:
1249 1277
Das kürzeste Programm gewinnt. Muss auf einem modernen Desktop-PC innerhalb von 10 Sekunden ausgeführt werden. Die Eingänge sind auf maximal 10.000 begrenzt.
n
auf Primalität zun
testen, indem Sie eine lange Zeichenfolge erstellen und diese gegen einen Regex testen, der absolut schrecklich ist?Antworten:
Perl 5,10 (Perl-E), 65 Zeichen
Die Hälfte des Guthabens sollte (mindestens) an @J B gehen.
quelle
qr
, -4, wenn Sie die Trennzeichen später nicht benötigen).qr
. LMGTFY: 81 Zeichen$m=$n=<>;$p='^1$|(^11+)\1+$';0while(1x--$m)=~$p;0while(1x++$n)=~$p;print"$m $n$/"
perl -E'$m=<>;for(-1,1){$n=$m;0while(1x($n+=$_))=~q<^1$|(^11+)\1+$>;say$n}'
Mathematica , 19
quelle
Mathematica: 28 Zeichen
Verwendungszweck
quelle
Python - 93
Basierend auf der Antwort von fR0DDY . Grundsätzlich habe ich die Zeilen 4 und 5 zusammengeführt und die Zeile 2 mit einer anderen Methode gekürzt.
quelle
Python
116111109 Zeichenquelle
f=lambda n:not(all(pow(b,n-1,n)<2for b in(3,5,7,13)))
n=input()-1
undm=n+2
, spart 3 Zeichen ... denke ich.not(all(...))
indem Sieany(...)
die Booleschen108
.J, 22 Zeichen
quelle
Haskell: 99
Beispiel
quelle
Python, 116
139Zeichen (doppelter Einzug ist Tabulatorzeichen)Verwendet ein gutes altes Sieb von Eratosthenes
Bearbeitungen und (danke an TON @JPvdMerwe). Sollte jetzt mit Primzahlen arbeiten.
Original
quelle
a=range(9999)
mita=range(n)
. Auch in Zeile 2 müssen Sie nicht zuma
Lambda übergehen , Sie können es einfach verwenden. Dies sollte sich viel rasieren.Scala 119:
ungolfed:
21,2 Sekunden, um alle 9998 Ints von 3 bis 10.000 auszuführen
quelle
Gelee , 5 Bytes (nicht konkurrierend?)
Probieren Sie es online aus!
quelle
Swift
190187185110Swift ist sehr schlecht im Code-Golf, aber ich habe es trotzdem versucht: D
Es wird immer kürzer ... (Danke an @HermanLauenstein für das Entfernen von 75 Bytes)
quelle
var a=Int(readLine()!)!;for b in[-1,1]{var n=a,c=0;while c<1{n+=b;c=1;for i in 2..<n{if n%i<1{c=0}}};print(n)}
(ich habe es noch nicht richtig getestet)Python (123)
HINWEIS: Das
Primes
Modul wurde von mir geschrieben, war jedoch vorhanden, bevor diese Frage gestellt wurde. Es wurde NICHT dafür geschrieben. Trotzdem wurde dies als unfair angesehen, daher hier die aktualisierte Version.Python (215)
quelle
123
Primes
; gegen den Geist des Code Golf.Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
ASCII-Äquivalent:
Eingebaute.
quelle
JavaScript (Node.js) , 79 Byte
Probieren Sie es online aus!
quelle
C (gcc) , 98 Bytes
Probieren Sie es online aus!
Vollprogrammversion, C (gcc) , 116 Bytes
Probieren Sie es online aus!
Beide Versionen gehen davon aus, dass wir 1 niemals auf Primalität testen. Dies geschieht nur, wenn die Eingabe 2 oder niedriger ist. In diesem Fall wäre die Ausgabe ohnehin undefiniert.
quelle