Um emirp é um primo não palindrômico que, quando revertido, também é primo.
A lista de emirps da base 10 pode ser encontrada no OEIS . Os seis primeiros são:
13, 17, 31, 37, 71, 73
No entanto, devido à regra de reversão, os emirps são diferentes em cada base. Por exemplo, os seis primeiros emirps binários são:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... e em hexadecimal, são eles:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Curiosidade: não existem emirps no unário, pois todo número é um palíndromo.
O desafio
Sua tarefa é criar uma função (ou programa completo), que tem dois parâmetros, e , e gera uma lista dos primeiros emirps em base de .
Regras / Detalhes:
- b 0 e são números inteiros positivos maiores que .
- Você pode assumir : ou seja, a base estará entre binário e hexidecimal.
- Você deve poder calcular valores de até .100
- A lista gerada pode estar na base , ou na base inteira padrão do seu idioma, desde que você o especifique em sua resposta.
- Não são permitidas verificações emirp internas (os testes de primalidade internos estão corretos)
- Você não pode codificar os emirps nem ler nenhum arquivo externo.
- As brechas padrão são proibidas, como sempre.
- Isso é código-golfe , então a resposta mais curta (em bytes) vence.
Casos de teste
Para cada caso de teste, incluí a lista na base b
e seus 10 equivalentes na base.
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]
Você pode testar seu programa ainda mais no meu exemplo Python (não destruído) em repl.it