Eine unberührte Welt vorbereiten

11

Stark inspiriert von der Programmierung einer unberührten Welt . Auch eng mit dieser Herausforderung verbunden .


Definieren wir eine makellose Primzahl als eine Zahl, die selbst eine Primzahl ist, aber keine Primzahl mehr ist, wenn Sie eine zusammenhängende Teilzeichenfolge mit N Ziffern der Basis 10 entfernen, wobei 0 < N < digits in number.

Zum Beispiel ist 409 eine makellose Primzahl, weil 409 selbst eine Primzahl ist, aber alle Zahlen, die sich aus dem Entfernen einer Teilzeichenfolge mit einer Ziffer ergeben, sind keine Primzahlen:

40
49
09 = 9

und alle Zahlen, die sich aus dem Entfernen von Teilzeichenfolgen der Länge 2 ergeben, sind keine Primzahlen:

4
9

Andererseits ist die Primzahl 439 nicht makellos. Das Entfernen der verschiedenen Teilzeichenfolgen führt zu:

43
49
39
4
9

Während 49, 39, 4 und 9 sind alle nicht-prime, 43 ist prime; somit ist 439 nicht makellos.

2, 3, 5 und 7 sind trivial makellos, da keine Teilzeichenfolgen entfernt werden können.

Herausforderung

Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu erstellen, die eine positive ganze Zahl N aufnimmt und die N-te makellose Primzahl ausgibt. Der Code sollte auf jedem modernen PC für Eingaben bis zu 50 in weniger als 1 Minute fertig sein.

Der kürzeste Code in Bytes gewinnt.

Als Referenz sind hier die ersten 20 makellosen Primzahlen:

N    Pristine prime
1    2
2    3
3    5
4    7
5    11
6    19
7    41
8    61
9    89
10   409
11   449
12   499
13   821
14   881
15   991
16   6299
17   6469
18   6869
19   6899
20   6949

Hier ist eine vollständige Liste der makellosen Primzahlen bis zu 1e7 oder N = 376.

Schließlich sind hier zwei verwandte OEIS-Einträge:

ETH-Produktionen
quelle

Antworten:

5

Pyth, 29 Bytes

e.f>}ZPZsmq1lPs.D`Z}Fd.CU`Z2Q

Golfen, Erklärung usw. folgen.

isaacg
quelle
4

CJam, 51 Bytes

1ri{{)_mp1$s_,)2m*{:>},\f{\~2$<@@>+0e|imp}1b!&!}g}*

Nur ein erster Durchgang, dies kann wahrscheinlich viel verbessert werden.

Testen Sie es hier.

Martin Ender
quelle
3

Japt, 61 Bytes

$while(V<U)T$°,W=Ts ,Tj «Wl o d@1o1-X+Wl)dZ{WjYZ n j} } ©V°;T

Probieren Sie es online aus!

Es ist eine Schande, dass ich noch keine Schleifen in Japt implementiert habe, sonst wäre dies ein gutes Stück kürzer. Immer noch Golf spielen ...

ETH-Produktionen
quelle