Une émirpe est un nombre premier non palindromique qui, une fois inversé, est également un nombre premier.
La liste des émirps de base 10 se trouve sur OEIS . Les six premiers sont:
13, 17, 31, 37, 71, 73
Cependant, en raison de la règle d'inversion, les émirps sont différents dans chaque base. Par exemple, les six premiers émirps binaires sont:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... et en hexadécimal, ce sont:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Fait amusant: il n'y a pas d'émirps dans l' unaire car chaque nombre est un palindrome.
Le défi
Votre tâche consiste à créer une fonction (ou un programme complet) qui prend deux paramètres, et , et génère une liste des premiers émirps de la base .
Règles / Détails:
- b 0 et sont tous deux des entiers positifs supérieurs à .
- Vous pouvez supposer : c'est-à-dire que la base sera comprise entre binaire et hexidécimal.
- Vous devriez pouvoir calculer des valeurs de jusqu'à .100
- La liste générée peut être en base , ou en base d'entiers standard de votre langue, tant que vous le spécifiez dans votre réponse.
- Les contrôles Emirp intégrés ne sont pas autorisés (les tests de primalité intégrés sont corrects)
- Vous ne pouvez pas coder en dur les émirps ou lire à partir de fichiers externes.
- Les failles standard sont interdites, comme toujours.
- Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte.
Cas de test
Pour chaque cas de test, j'ai inclus la liste en base b
et ses équivalents en base 10.
B = 2, N = 10
BIN: [1011, 1101, 10111, 11101, 100101, 101001, 101011, 101111, 110101, 111101]
DEC: [11, 13, 23, 29, 37, 41, 43, 47, 53, 61]
B = 3, N = 5
BASE3: [12, 21, 102, 201, 1011]
DEC: [5, 7, 11, 19, 31]
B = 12, N = 7
BASE12: [15, 51, 57, 5B, 75, B5, 107]
DEC: [17, 61, 67, 71, 89, 137, 151]
B = 16, N = 4
HEX: [17, 1F, 35, 3B]
DEC: [23, 31, 53, 59]
Vous pouvez tester votre programme plus en détail par rapport à mon exemple Python (non golfé) sur repl.it
05AB1E , 17 octets
Utilise l' encodage CP-1252 .
L'ordre d'entrée est
n, b
Sortie est en base 10.
Essayez-le en ligne!
Explication
la source
Mathematica, 70 octets
Fonctionne pour
0 <= n <= 100
et2 <= b <= 16
. Dans la listePrime@Range@437
des premiers437
nombres premiers, trouvezCases
p
où la baseIntegerReverse
r
dep
in#2
n'est pas égale àp
et est également premier, puis prenez le premier#
telp
.Voici une solution de 95 octets qui fonctionne pour arbitraire
n>=0
etb>=2
:la source
IntegerReverse
. Bien sûr! Agréable.Reap
ing est autorisé dans le pied de page:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 octets
Lisible:
c
convertit un nombre donné en base$b
etd
convertit un nombre donné de la base$b
en décimal en trouvant le premier nombre qui renvoie ledit$b
nombre de base lorsqu'il est passé àc
. La boucle for vérifie ensuite s'il s'agit d'un palindrome et si les deux nombres sont premiers à l'aide de l'expression rationnelle composite.la source
Mathematica 112 octets
Exemple
Trouvez les 10 premiers émips dans l'hex. retournez-les en décimal.
Non golfé
la source
Perl 6 , 91 octets
Renvoie la liste des émirps en base 10.
la source
Python 3 ,
232214191 191188 octetsEssayez-le en ligne!
la source
C,
293286261 octetsAmélioré par @ceilingcat , 261 octets:
Essayez-le en ligne!
(Cette personne est comme me suivre constamment autour de PPCG et améliorer mes trucs dans les commentaires, et dès que je réponds pour le remercier, il supprime simplement le commentaire et disparaît lol. Welp, merci encore!)
Amélioré par @movatica , 286 octets:
Essayez-le en ligne!
Ma réponse d'origine, 293 octets:
Compilez avec
gcc emirp.c -o emirp -lm
et exécutez avec./emirp <b> <n>
. Imprime des émirps séparés par des espaces en base 10.la source
JavaScript (ES6),
149148141140 octetsRenvoie une liste d'émirps séparés par des espaces dans la base b. (Peut être 2 octets plus court en renvoyant une liste décimale à la place.)
Cas de test
Afficher l'extrait de code
la source
Python 2 , 133 octets
Essayez-le en ligne!
Sort chaque numéro sur une nouvelle ligne, en base 10
la source
APL (NARS), 87 caractères, 174 octets
Le résultat sera en base 10. Test et résultats:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
ferait la conversion de⍵
dans la base⍺
, résultat entier de tableau;0π⍵
retournerait vrai [1] si⍵
est premier sinon il retournerait 0.la source