Aux fins de ce défi, une puissance première d'un nombre premier (PPP) est définie comme un nombre qui peut être défini comme un nombre premier à la puissance d'un nombre premier. Par exemple, 9 est un PPP car il peut être représenté par 3 ^ 2. 81 d'autre part n'est pas un PPP car il ne peut être représenté que par 3 ^ 4, et 4 n'est pas premier. Les premiers PPP sont: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... Il s'agit de la séquence OEIS A053810
Ta tâche:
Écrivez un programme ou une fonction qui, pour un entier d'entrée n, retourne / sort le nième PPP, indexé 1 ou indexé 0, selon votre préférence.
Contribution:
Un entier compris entre 0 et 1 000, reçu par toute méthode raisonnable.
Production:
Le PPP à l'index indiqué par l'entrée.
Cas de test:
Ceux-ci sont indexés 1, et donc, si votre programme prend une entrée indexée 0, la même sortie doit être obtenue pour l'entrée indiquée - 1.
3 -> 9
6 -> 32
9 -> 125
Notation:
Ce code-golf , le score le plus bas en octets gagne!
Réponses:
05AB1E (hérité) ,
97 octetsEnregistré 2 octets grâce à @KevinCruijssen
Essayez-le en ligne!
la source
»
au lieu deJ
donc ce0\n1
n'est pas interprété comme véridique! Mais vous pouvez enregistrer un octet dans la version héritée de 05AB1E (que vous avez également utilisée dans votre TIO), en omettant le½
, car cela se fait implicitement pourµ
(deuxième puce dans cette astuce 05AB1E ). , AussiʒĀ}
peut être0K
. 7 octetsHusk , 10 octets
Essayez-le en ligne!
Explication
la source
En fait , 14 octets
Basé sur la solution Pyth de M. Xcoder . Suggestions de golf bienvenues. Essayez-le en ligne!
Ungolfing
la source
Mathematica, 48 octets
Essayez-le en ligne!
mais Martin Ender a eu une meilleure idée et a économisé 6 octets
Mathematica, 42 octets
Essayez-le en ligne!
la source
Union
au lieu deJoin
pour éviter leSort
.Outer
sauve un autre octetArray
:(Union@@Outer[Power,p=Prime@Range@#,p])[[#]]&
Tuples
c'est encore plus court:Sort[Power@@@Prime@Range@#~Tuples~2][[#]]&
Gelée ,
121110 octets1 octet merci à Dennis.
Essayez-le en ligne!
la source
Numéros R +, 57 octets
Essayez-le en ligne!
outer
est une fonction très pratique.Assez certain que cela fonctionnera toujours. Fera un argument formel quand j'aurai le temps.
la source
Haskell ,
958580 octets-10 octets grâce à @Lynn
-5 octets grâce à @WillNess
Basé sur 0
Essayez-le en ligne!
Explication
la source
f=(!!)[x|x<-[2..],or[y^e==x|y<-p x,e<-p x]]
enregistre 10 octets.f=(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
. c'est peut-être OK alors de ne pas compter lef=
? (jamais sûr des règles).f=
ne fallait pas compter. Ce sera donc 80 octets, avec(!!)[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 octetsinput()
plutôt qu'en définissant une fonction.Essayez-le en ligne!
la source
i=[]
et....i+=[r]*....
for
r
au lieu dei[p]
Pyth , 15 octets
Essayez-le ici! ou Vérifiez plus de cas de test.
Explication
la source
Javascript
137133 octets** algorithme normal (résultat 100 ms) P = n => {
la source
APL (Dyalog Extended) , 15 octets
Essayez-le en ligne!
Explication
la source
Perl 6 , 50 octets
Essayez-le en ligne!
Les raisons des 24 et 7028 sont que la plus grande valeur (n = 1000) est 49378729, ce qui est 7027 ^ 2, et la plus grande puissance principale de 2 qui rentre en dessous est 23. Donc, couvrant 2..7027 ^ 2 .. 23 comprend tous les articles des 1000 premiers (et beaucoup de pièces de rechange).
la source
Pyth - 13 octets
Suite de tests .
la source
PARI / GP, 48 octets
Si vous ne comptez pas la
f(n)=
partie, c'est 43 octets.Une autre approche sans la notation d'ensemble qui ne vérifie pas autant de cas inutiles:
la source
Java 8, 211 octets
Méthode très inefficace. Elle calcule essentiellement tous les PPP de 2 2 à
999 999132 132 et les stocke dans une liste, puis trie cette liste, puis obtient len
'e élément de cette liste.EDIT: Au lieu d'utiliser 999 999, ce qui donne une liste de 28 225 éléments, j'utilise maintenant 132 132, ce qui donne une liste de 1 024 éléments seulement. Cela améliore considérablement les performances et est parfaitement acceptable car le défi indique que nous devons prendre en charge une entrée de l'index 0 à 1000. (Changement
1e3
en132
n'affecte pas le nombre d'octets, cependant.)Explication:
Essayez-le ici.
la source
J, 21 octets
Fonction anonyme zéro indexée.
Essayez-le en ligne!
En essayant de revenir dans le swing des choses, mais il me semble avoir oublié toutes les astuces pour faire de bonnes chaînes monadiques.
Brève explication
Construit un tableau des puissances premières du 0e premier au premier à l'indice de l'entrée plus 1 (pour tenir compte de 0). Aplatit cette liste et la trie, puis l'indexe. Je me rends compte maintenant que cela pourrait donner des résultats incorrects pour certaines valeurs car la table n'est peut-être pas assez grande - dans ce cas, je modifierais une valeur codée en dur comme 1e4, ce qui devrait suffire. Je ne peux pas le prouver dans un sens ou dans l'autre (il passe pour les cas de test donnés), alors faites-moi savoir si c'est un problème.
Aussi 21 octets
la source