Contexte
Un super-premier est un nombre premier dont l'indice dans la liste de tous les nombres premiers est également premier. La séquence ressemble à ceci:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Il s'agit de la séquence A006450 dans l'OEIS .
Défi
Étant donné un entier positif, déterminez s'il s'agit d'un super-premier.
Cas de test
2: faux 3: vrai 4: faux 5: vrai 7: faux 11: vrai 13: faux 17: vrai 709: vrai 851: faux 991: vrai
Notation
Il s'agit de code-golf , donc la réponse la plus courte dans chaque langue l'emporte.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
la source
la source
Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Comment ça marche
la source
Mathematica,
2623 octetsMerci à user202729 pour avoir économisé 3 octets.
Cela utilise le fait que Mathematica laisse la plupart des expressions absurdes non évaluées (dans ce cas, la logique
And
de deux nombres) etMap
peut être appliquée à n'importe quelle expression, pas seulement aux listes. Nous calculons donc leAnd
de l'entrée et son indice premier, qui reste juste comme ça, puis nousMap
testons la primalité sur cette expression qui transforme les deux opérandes duAnd
en booléens, de sorte que leAnd
peut ensuite être évalué.la source
PrimeQ/@(#&&PrimePi@#)&
.Gelée , 6 octets
Essayez-le en ligne!
Utilise la même technique que ma réponse Japt: Générez les nombres premiers jusqu'à n , obtenez l'index de n dans cette liste et vérifiez cela pour la primauté. Si n lui-même n'est pas premier, l'index est 0 , ce qui n'est pas non plus premier, donc 0 est quand même retourné.
la source
Japt ,
1311 octetsTestez-le en ligne!
Explication
C'est en fait très simple, contrairement à ma soumission initiale:
la source
Python 3 ,
1049793 octetsRenvoie
0
/1
, au plus 4 octets de plus s'il doit êtreTrue
/False
.Essayez-le en ligne!
la source
f
, vous pouvez reformater votre code comme ceci et l'exclure du nombre d'octets.Gelée , 7 octets
Essayez-le en ligne!
ÆC
compte le nombre de nombres premiers inférieurs ou égaux à l'entrée (donc, si l'entrée est le n ème nombre premier, il renvoie n ). Teste ensuiteÆP
cet index pour la primauté. Enfin,a
fait un ET logique entre ce résultat etÆP
(test de primalité) de l'entrée d'origine.la source
Haskell , 62 octets
Essayez-le en ligne! Utilisation:
f 991
rendementsTrue
.la source
05AB1E , 6 octets
Essayez-le en ligne!
Explication
la source
Pyth , 12 octets
Essayez-le en ligne!
Explication
la source
Pyke, 8 octets
Essayez-le ici!
la source
Perl 6 , 46 octets
Essayez-le en ligne!
la source
QBIC , 33 octets
Explication
la source
Mathematica,
3529 octets-6 octets de @MartinEnder
la source
P@P@Range@#
devrait sauver un tas.Haskell, 121 octets
la source
(\(_,x)->x)
estsnd
,(\(x,_)->p x)
est(p.fst)
. Les deuxfst
etsnd
sont en prélude, donc pas besoin d'importations.r x=elem x$take x s
. Cependant, dans ce cas , vous pouvez aller Pointfree (introduire à nouveau des accents graves) et d' omettre le nom de la fonction:elem<*>(`take`s)
.Positron , 148 octets
Essayez-le en ligne!
la source
Pari / GP , 31 octets
Essayez-le en ligne!
la source
Matlab,
3634 octetsEnregistré 2 octets grâce à Tom Carpenter.
Une implémentation très naïve utilisant des fonctions intégrées:
la source
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 octets
Essayez-le en ligne!
Construit
r
, la liste des nombres premiers <= n; si n est premier, alorsn
est lelen(r)
'e premier. Donc n est un super premier siff n dans r et len (r) dans r.la source
Python 2 , 79 octets
Essayez-le en ligne!
la source
Julia 0,6, 61 octets
retourne 1 si x est un super-premier, 0 sinon.
sans utiliser une fonction de type isprime.
la source