Un emirp es un primo no palindrómico que, cuando se invierte, también es primo.
La lista de emirps de base 10 se puede encontrar en OEIS . Los primeros seis son:
13, 17, 31, 37, 71, 73
Sin embargo, debido a la regla de reversión, los emirps son diferentes en cada base. Por ejemplo, los primeros seis emirps binarios son:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... y en hexadecimal, son:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Dato curioso: no hay emirps en unario ya que cada número es un palíndromo.
El reto
Su tarea es crear una función (o programa completo) que tome dos parámetros, y , y genere una lista de los primeros emirps en la base .
Reglas / Detalles:
- b 0 y son enteros positivos mayores que .
- Puede suponer : es decir, la base estará entre binario y hexadecimal.
- Debería poder calcular valores de hasta 100 .
- La lista generada puede estar en la base , o en la base de enteros estándar de su idioma, siempre que especifique esto en su respuesta.
- Las comprobaciones de emirp integradas no están permitidas (las pruebas de primalidad integradas están bien)
- No puede codificar los emirps o leer archivos externos.
- Las lagunas estándar están prohibidas, como siempre.
- Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
Casos de prueba
Para cada caso de prueba, he incluido la lista en base b
y sus equivalentes 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]
Puede probar su programa aún más con mi ejemplo de Python (sin golf) en repl.it
fuente
05AB1E , 17 bytes
Utiliza la codificación CP-1252 .
El orden de entrada es La
n, b
salida está en base-10.
Pruébalo en línea!
Explicación
fuente
Mathematica, 70 bytes
Trabajos para
0 <= n <= 100
y2 <= b <= 16
. En la listaPrime@Range@437
de los primeros437
números primos, busque elCases
p
que elIntegerReverse
r
dep
la base#2
no es igual ap
y también es primo, a continuación, tomar la primera#
talesp
.Aquí hay una solución de 95 bytes que funciona para arbitrarios
n>=0
yb>=2
:fuente
IntegerReverse
. ¡Por supuesto! Agradable.Reap
ing está permitido en el pie de página:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 bytes
Legible:
c
convierte un número dado en base$b
, yd
convierte un número dado de base$b
en decimal al encontrar el primer número que devuelve dicho$b
número base cuando se pasa ac
. Luego, el bucle for comprueba si es un palíndromo y si ambos números son primos utilizando la expresión regular compuesta.fuente
Mathematica 112 bytes
Ejemplo
Encuentra los primeros 10 Emips en hexadecimal; devolverlos en decimal.
Sin golf
fuente
Perl 6 , 91 bytes
Devuelve la lista de emirps en base 10.
fuente
Python 3 ,
232214191188 bytesPruébalo en línea!
fuente
C,
293286261 bytesMejorado por @ceilingcat , 261 bytes:
Pruébalo en línea!
(Esta persona es como seguirme constantemente por PPCG y mejorar mis cosas en los comentarios, y tan pronto como respondo para agradecerle, simplemente borra el comentario y desaparece, jajaja. ¡Bien, gracias de nuevo!)
Mejorado por @movatica , 286 bytes:
Pruébalo en línea!
Mi respuesta original, 293 bytes:
Compilar
gcc emirp.c -o emirp -lm
y ejecutar con./emirp <b> <n>
. Imprime emirps separados por espacios en base-10.fuente
JavaScript (ES6),
149148141140 bytesDevuelve una lista de emirps separados por espacios en la base b. (Podría ser 2 bytes más corto al devolver una lista decimal en su lugar).
Casos de prueba
Mostrar fragmento de código
fuente
Python 2 , 133 bytes
Pruébalo en línea!
Emite cada número en una nueva línea, en base 10
fuente
APL (NARS), 87 caracteres, 174 bytes
El resultado estará en la base 10. Prueba y resultados:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
haría la conversión de⍵
en base⍺
, resultado entero de la matriz;0π⍵
devolvería verdadero [1] si⍵
es primo de lo contrario devolvería 0.fuente