Diese Frage wird eine Wendung beim Finden der n
th Primzahl sein.
Herausforderung
Sie müssen ein Programm schreiben, das eine Eingabe benötigt n
, und die n
dritte Primzahl ausgeben, deren Dezimalrepräsentation die Dezimalrepräsentation von n
als Unterzeichenfolge enthält.
Verwirrt? Hier sind einige Beispiele.
n=1
Primes: 2, 3, 5, 7, 11
^1 first prime that contains a 1
Output: 11
n=2
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 second prime that contains a 2
Output: 23
n=3
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 ^3 third prime that contains a 3
Output: 23
n=10
Primes: 2, 3, 5, 7, 11, ..., 97, 101, 103, 107, 109, ..., 997, 1009, 1013, 1019, 1021, 1031, 1033
^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 tenth prime that contains a 10
Output: 1033
Dies ist Codegolf , daher gewinnt die niedrigste Bytezahl.
Wenn etwas verwirrend ist, hinterlassen Sie bitte einen Kommentar.
Hot Network Questions
Liste stand.Antworten:
05AB1E , 8 Bytes
Code:
Erläuterung:
Verwendet CP-1252- Codierung. Probieren Sie es online! .
quelle
Pyth - 11 Bytes
Test Suite .
quelle
Python 2,
676562 BytesTeste es auf Ideone .
Wie es funktioniert
Wir verwenden eine Folgerung aus dem Satz von Wilson :
Die Variable p ist immer gleich dem Quadrat der Fakultät von m - 1 .
Wenn k <n ,
k/n
ergibt sich 0 und f wird rekursiv aufgerufen. m wird inkrementiert, p wird aktualisiert und k wird nur dann inkrementiert, wenn m eine Primzahl ist, die n enthält .Letzteres wird durch Addition des Ergebnisses von
p%m*(`n`in`m`)
zu k erreicht . Durch die logische Folge des Satzes von Wilson , wenn m prim ist ,p%m
kehrt 1 , und wenn nicht, gibt sie 0 .Sobald k n erreicht , haben wir q gefunden , die n- te Primzahl, die n enthält .
Wir sind beim nächsten Aufruf während der Prüfung, also m = q + 1 .
k/n
gibt 1 zurück und die bitweisen Operatoren-~
erhöhen diese Zahl einmal für jeden Funktionsaufruf. Da es dauert q - 1 Anruf f zu inkrementieren m von 2 bis q + 1 , der outmost Aufruf f kehrt 1 + q - 1 = q , wie beabsichtigt.quelle
Bash, 27 Bytes
primes
kommt von bsdgames.Nimmt Eingaben als Befehlszeilenargument und gibt sie auf STDOUT aus.
quelle
Jelly , 13 Bytes
Probieren Sie es online!
quelle
Mathematica, 75 Bytes
Kann noch Golf sein.
quelle
Java,
194180173171112 BytesCode:
Ungolfed:
quelle
P {
und entfernenString[] s
. Und 2. Sie geben derzeit nur die Ausgabe für10
, aber die Code-Golf-Herausforderung bestand darin, eine Eingabe zu nehmenn
und die richtige Ausgabe basierend auf dieser Eingabe zu geben. Das könnte Sie auch interessieren: Tipps zum Golfen in Java.Ruby,
6261 BytesBenötigt das
-rprime
Flag (+8 Bytes).quelle
Julia,
61-60BytesProbieren Sie es online!
quelle
MATL , 18 Bytes
Probieren Sie es online!
Erläuterung
Dies erzeugt Primzahlen in einer
do...while
Schleife. Für jede Primzahl wird die Bedingung geprüft (und die Primzahl wird verbraucht). Wenn er zufrieden ist, wird diese Primzahl erneut auf den Stapel gelegt. Die Anzahl der Elemente im Stapel wird als Anzahl der gefundenen qualifizierenden Primzahlen verwendet. Wenn es genug davon gibt, wird das letzte angezeigt.quelle
Pyke, 15 Bytes
Probieren Sie es hier aus!
quelle
Bash + GNU-Coreutils, 66 Bytes
Im Gegensatz zur @ Doorknob-Lösung benötigt diese nur Dinge, die auf jedem GNU / Linux installiert sind:
quelle
seq 1e20|factor|grep -Po "(?<=: )\d*$2\d$"|sed $1q\;d
for((...)){
muss ein Leerzeichen oder ein Zeilenumbruch vorhanden sein, damit es keine Rolle spielt. Vor dem Abschluss}
muss eine;
oder eine neue Zeile stehen, daher spielt es auch keine Rolle.Perl 6 , 41 Bytes
Erläuterung:
Prüfung:
quelle
Java 8,
192183181171 Bytes (volles Programm)Probieren Sie es online aus.
Erläuterung:
Java 8, 105 Bytes (Lambda-Funktion)
Probieren Sie es online aus.
Wie oben, aber mit
n
Integer-Eingabe und ohne die ausführlichen Klasseninhalte.quelle
&&
mit Ihrem regulären Ausdruck ersetzen&
und entfernen?
.&&
und&
aus irgendeinem Grund ..Clojure, 118 Bytes
Erhält gerade das n-te Element einer faulen unendlichen Folge von Zahlen, die Primzahlen sind und
n
in ihrer Zeichenfolgendarstellung haben.Sie können es hier ausprobieren: https://ideone.com/ioBJjt
quelle
Eigentlich 16 Bytes
Probieren Sie es online!
Erläuterung:
quelle
PowerShell v2 +,
108 bis99 ByteOoof. Das Fehlen jeglicher eingebauter Primberechnung / -prüfung tut hier wirklich weh.
Übernimmt die Eingabe
$n
, tritt in einefor()
Endlosschleife ein. Bei jeder Iteration verwenden wir einefor
Schleife, die um den PowerShell-Regex-Prime-Checker (h / t für Martin) gewickelt ist, um ihn durch Inkrementieren$i
jedes Mal durch die Schleife in einen Prime-Generator zu verwandeln . (Wenn Sie beispielsweise nur ausführen ,for(){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$i}}
wird die Ausgabe2, 3, 5, 7...
durch Zeilenumbrüche getrennt).Dann eine einfache
-like
Überprüfung, um zu sehen, ob$n
sich irgendwo etwas in$i
unserem Zähler befindet , und eine Erhöhung unseres Zählers$o
. Wenn wir erreicht haben, wo$n
und$o
gleich sind, geben Sie$i
und ausexit
. Andernfalls fahren wir mit derfor
Suche nach der nächsten Primzahl fort und der Vorgang wiederholt sich.quelle
APL (NARS), 39 Zeichen, 78 Byte
1π ist die nächste Primzahl ...; Prüfung:
aber das geht schon bei 20 aus dem stapelplatz ... stattdessen scheint das unten ok zu sein auch wenn die länge etwas länger ist (61 zeichen)
quelle
Add ++ , 36 Bytes
Probieren Sie es online!
quelle
Japt
-h
,151311 BytesVersuch es
quelle