Hintergrund
Eine Super-Primzahl ist eine Primzahl, deren Index in der Liste aller Primzahlen ebenfalls eine Primzahl ist. Die Sequenz sieht folgendermaßen aus:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Dies ist die Sequenz A006450 im OEIS .
Herausforderung
Bestimmen Sie bei einer positiven Ganzzahl, ob es sich um eine Super-Primzahl handelt.
Testfälle
2: falsch 3: wahr 4: falsch 5: wahr 7: falsch 11: wahr 13: falsch 17: wahr 709: wahr 851: falsch 991: wahr
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
quelle
quelle
Antworten:
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Mathematica,
2623 BytesVielen Dank an user202729 für das Speichern von 3 Bytes.
Dies nutzt die Tatsache, dass Mathematica die meisten unsinnigen Ausdrücke unbewertet lässt (in diesem Fall die Logik
And
von zwei Zahlen) undMap
auf jeden Ausdruck angewendet werden kann, nicht nur auf Listen. Wir berechnen also dasAnd
von der Eingabe und ihrem Primzahlindex, was einfach so bleibt, und dannMap
den Primalitätstest über diesen Ausdruck, der die beiden Operanden vonAnd
in Boolesche Werte umwandelt, so dass dasAnd
dann ausgewertet werden kann.quelle
PrimeQ/@(#&&PrimePi@#)&
.Gelee , 6 Bytes
Probieren Sie es online!
Verwendet die gleiche Technik wie meine Japt-Antwort: Generiere die Primzahlen bis n , ermittle den Index von n in dieser Liste und überprüfe, ob sie eine Primalität haben. Wenn n selbst keine Primzahl ist, ist der Index 0 , was ebenfalls keine Primzahl ist. Daher wird trotzdem 0 zurückgegeben.
quelle
Japt ,
1311 BytesOnline testen!
Erläuterung
Dies ist eigentlich sehr einfach, im Gegensatz zu meiner ursprünglichen Einreichung:
quelle
Python 3 ,
1049793 BytesGibt
0
/ zurück1
, höchstens 4 Bytes länger, wenn esTrue
/ sein mussFalse
.Probieren Sie es online!
quelle
f
, können Sie Ihren Code auf diese Weise neu formatieren und ihn von der Byteanzahl ausschließen.Gelee , 7 Bytes
Probieren Sie es online!
ÆC
zählt die Anzahl der Primzahlen, die kleiner oder gleich der Eingabe sind (wenn die Eingabe also die n- te Primzahl ist, wird n zurückgegeben ). DannÆP
prüft dieser Index auf Primalität. Führt schließlicha
ein logisches UND zwischen diesem Ergebnis undÆP
(Primärtest) der ursprünglichen Eingabe durch.quelle
Haskell , 62 Bytes
Probieren Sie es online! Verbrauch:
f 991
ErträgeTrue
.quelle
05AB1E , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyth , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyke, 8 Bytes
Probieren Sie es hier aus!
quelle
Perl 6 , 46 Bytes
Probieren Sie es online!
quelle
QBIC , 33 Bytes
Erläuterung
quelle
Mathematica,
3529 Bytes-6 Bytes von @MartinEnder
quelle
P@P@Range@#
sollte ein paar retten.Haskell, 121 Bytes
quelle
(\(_,x)->x)
istsnd
,(\(x,_)->p x)
ist(p.fst)
. Beidefst
undsnd
sind im Prelude, daher kein Import nötig.r x=elem x$take x s
. In diesem Fall können Sie jedoch pointfree (Einführung von Backticks wieder) und lassen Sie die Funktionsnamen gehen:elem<*>(`take`s)
.Positron , 148 Bytes
Probieren Sie es online!
quelle
Pari / GP , 31 Bytes
Probieren Sie es online!
quelle
Matlab,
3634 Bytes2 Bytes gespart dank Tom Carpenter.
Eine sehr naive Implementierung mit integrierten Funktionen:
quelle
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 Bytes
Probieren Sie es online!
Konstruiert
r
die Liste der Primzahlen <= n; Wenn n Primzahl ist, dannn
ist es dielen(r)
'te Primzahl. Also ist n eine Superprimzahl iff n in r und len (r) in r.quelle
Python 2 , 79 Bytes
Probieren Sie es online!
quelle
Julia 0,6, 61 Bytes
Gib 1 zurück, wenn x eine Super-Primzahl ist, sonst 0.
ohne Verwendung einer isprime-kind-Funktion.
quelle