Für den Zweck dieser Herausforderung wird eine Primzahlkraft eines Prims (PPP) als eine Zahl definiert, die als Primzahl zur Potenz einer Primzahl definiert werden kann. Beispielsweise ist 9 ein PPP, da es als 3 ^ 2 dargestellt werden kann. 81 hingegen ist kein PPP, da es nur als 3 ^ 4 dargestellt werden kann und 4 keine Primzahl ist. Die ersten PPPs sind: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... Dies ist die OEIS-Sequenz A053810
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, die für eine Ganzzahl n den n-ten PPP zurückgibt / ausgibt, entweder 1-indiziert oder 0-indiziert, je nachdem, was Sie bevorzugen.
Eingang:
Eine Ganzzahl zwischen 0 und 1.000, die mit einer angemessenen Methode empfangen wird.
Ausgabe:
Die PPP am vom Eingang angegebenen Index.
Testfälle:
Diese sind 1-indiziert. Wenn Ihr Programm also eine 0-indizierte Eingabe verwendet, sollte dieselbe Ausgabe für die angegebene Eingabe - 1 erzielt werden.
3 -> 9
6 -> 32
9 -> 125
Wertung:
Dieser Code-Golf , niedrigste Punktzahl in Bytes gewinnt!
Antworten:
05AB1E (Legacy) ,
97 Bytes2 Bytes dank @KevinCruijssen gespeichert
Probieren Sie es online!
quelle
»
anstattJ
so0\n1
nicht als wahr zu interpretieren! Sie können jedoch ein Byte in der Vorgängerversion von 05AB1E (die Sie auch in Ihrem TIO verwendet haben) speichern, indem Sie das weglassen½
, da dies implizit fürµ
(zweiter Aufzählungspunkt in meinem 05AB1E-Tipp ) erfolgt. AuchʒĀ}
kann0K
. 7 BytesSchale , 10 Bytes
Probieren Sie es online!
Erläuterung
quelle
Eigentlich 14 Bytes
Basierend auf der Pyth-Lösung von Mr. Xcoder . Golfvorschläge sind willkommen. Probieren Sie es online!
Ungolfing
quelle
Mathematica, 48 Bytes
Probieren Sie es online!
aber Martin Ender hatte eine bessere Idee und sparte 6 Bytes
Mathematica, 42 Bytes
Probieren Sie es online!
quelle
Union
statt verwendenJoin
, um das zu vermeidenSort
.Outer
spart ein weiteres Byte überArray
:(Union@@Outer[Power,p=Prime@Range@#,p])[[#]]&
Tuples
ist noch kürzer:Sort[Power@@@Prime@Range@#~Tuples~2][[#]]&
Jelly ,
121110 Bytes1 Byte danke an Dennis.
Probieren Sie es online!
quelle
R + Zahlen, 57 Bytes
Probieren Sie es online!
outer
ist so eine praktische Funktion.Ziemlich sicher, dass dies immer funktionieren wird. Ich werde ein formelles Argument vorbringen, wenn ich Zeit habe.
quelle
Haskell ,
958580 Bytes-10 Bytes dank @Lynn
-5 Bytes dank @WillNess
0-basiert
Probieren Sie es online!
Erläuterung
quelle
f=(!!)[x|x<-[2..],or[y^e==x|y<-p x,e<-p x]]
Spart 10 Bytes.f=(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
. vielleicht ist es dann ok das nicht zu zählenf=
? (nie sicher über die Regeln).f=
nicht gezählt werden sollte. Also werden es 80 Bytes sein, mit(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
.Python 2 ,
163157137136 Bytesinput()
indem eine Funktion verwendet und nicht definiert wurde.Probieren Sie es online!
quelle
i=[]
und....i+=[r]*....
for
r
stattdessen nicht zurückkehreni[p]
Pyth , 15 Bytes
Probieren Sie es hier aus! oder Überprüfen Sie weitere Testfälle.
Erläuterung
quelle
Javascript
137133 Bytes** normaler Algorithmus (100ms Ergebnis) P = n => {
quelle
APL (Dyalog Extended) , 15 Byte
Probieren Sie es online!
Erläuterung
quelle
Perl 6 , 50 Bytes
Probieren Sie es online!
Die Gründe für die 24 und 7028 sind, dass der größte Wert (n = 1000) 49378729 ist, was 7027 ^ 2 ist, und die größte Primzahl von 2, die darunter passt, 23 ist. 23 enthält alle Elemente der ersten 1000 (und viele Ersatzteile).
quelle
Pyth - 13 Bytes
Test Suite .
quelle
PARI / GP, 48 Bytes
Wenn Sie den
f(n)=
Teil nicht zählen , sind dies 43 Byte.Ein anderer Ansatz ohne die eingestellte Notation, der nicht so viele unnötige Fälle überprüft:
quelle
Java 8, 211 Bytes
Sehr ineffiziente Methode. Sie berechnet im Grunde genommen alle PPPs von 2 2 bis
999 999132 132 und speichert sie in einer Liste, sortiert dann diese Liste und erhält dann dasn
'te Element aus dieser Liste.BEARBEITEN: Anstatt 999 999 zu verwenden, was zu einer Liste von 28.225 Elementen führt, verwende ich jetzt 132 132, was zu einer Liste von nur 1.024 Elementen führt. Dies verbessert die Leistung erheblich und ist durchaus akzeptabel, da laut Challenge eine Eingabe von Index 0 bis 1.000 unterstützt werden sollte. (Der Wechsel
1e3
zu hat132
jedoch keinen Einfluss auf die Anzahl der Bytes.)Erläuterung:
Probieren Sie es hier aus.
quelle
J, 21 Bytes
Anonyme Funktion ohne Index.
Probieren Sie es online!
Ich habe versucht, wieder in Schwung zu kommen, aber anscheinend habe ich alle Tricks vergessen, um gute monadische Ketten zu machen.
Kurze Erklärung
Erstellt eine Tabelle mit Primzahlen von der 0. Primzahl bis zur Primzahl am Index der Eingabe plus 1 (um 0 zu berücksichtigen). Reduziert diese Liste, sortiert sie und indiziert sie anschließend. Mir ist jetzt klar, dass dies für einige Werte zu falschen Ergebnissen führen kann, da die Tabelle möglicherweise nicht groß genug ist. In diesem Fall würde ich einen fest codierten Wert wie 1e4 eingeben, der ausreichen sollte. Ich kann es nicht auf die eine oder andere Weise beweisen (es gilt für die angegebenen Testfälle). Lassen Sie mich also wissen, ob dies ein Problem ist.
Auch 21 Bytes
quelle