fundo
Um super-primo é um número primo cujo índice na lista de todos os primos também é primo. A sequência é assim:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Essa é a sequência A006450 no OEIS .
Desafio
Dado um número inteiro positivo, determine se é um super-prime.
Casos de teste
2: false 3: verdadeiro 4: false 5: verdadeiro 7: false 11: true 13: false 17: true 709: true 851: false 991: true
Pontuação
Isso é código-golfe , então a resposta mais curta em cada idioma vence.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
fonte
fonte
Respostas:
Gelatina , 5 bytes
Experimente online!
Como funciona
fonte
Mathematica,
2623 bytesObrigado a user202729 por salvar 3 bytes.
Isso faz uso do fato de que o Mathematica deixa a maioria das expressões sem sentido avaliadas (neste caso, a lógica
And
de dois números) eMap
pode ser aplicada a qualquer expressão, não apenas às listas. Então, calculamos o valorAnd
da entrada e seu índice principal, que permanece assim, e depoisMap
o teste de primalidade sobre essa expressão que transforma os dois operandos doAnd
em booleanos, para queAnd
possam ser avaliados.fonte
PrimeQ/@(#&&PrimePi@#)&
.Gelatina , 6 bytes
Experimente online!
Utiliza a mesma técnica da minha resposta em japonês: gere os números primos até n , obtenha o índice de n nessa lista e verifique se há primalidade. Se n em si não for primo, o índice será 0 , o que também não é primo, portanto, 0 será retornado de qualquer maneira.
fonte
Japonês ,
1311 bytesTeste online!
Explicação
Na verdade, isso é muito direto, ao contrário do meu envio original:
fonte
Python 3 ,
1049793 bytesRetorna
0
/1
, no máximo 4 bytes mais, se for necessárioTrue
/False
.Experimente online!
fonte
f
, você pode reformatar seu código assim e excluí-lo da contagem de bytes.Geléia , 7 bytes
Experimente online!
ÆC
contagem do número de primos inferior ou igual ao da entrada (assim, se a entrada é o n th nobre, ele retorna n ). Em seguida,ÆP
testa esse índice quanto à primalidade. Finalmente,a
faz um AND lógico entre esse resultado eÆP
(teste de primalidade) da entrada original.fonte
Haskell , 62 bytes
Experimente online! Uso:
f 991
rendimentosTrue
.fonte
05AB1E , 6 bytes
Experimente online!
Explicação
fonte
Pitão , 12 bytes
Experimente online!
Explicação
fonte
Pyke, 8 bytes
Experimente aqui!
fonte
Perl 6 , 46 bytes
Experimente online!
fonte
QBIC , 33 bytes
Explicação
fonte
Mathematica,
3529 bytes-6 bytes de @MartinEnder
fonte
P@P@Range@#
deve salvar um monte.Haskell, 121 bytes
fonte
(\(_,x)->x)
ésnd
,(\(x,_)->p x)
é(p.fst)
. Ambosfst
esnd
estão no Prelude, portanto, não há necessidade de importações.r x=elem x$take x s
. No entanto, neste caso, você pode ir pointfree (introduzindo backticks novamente) e omitir o nome da função:elem<*>(`take`s)
.Positron , 148 bytes
Experimente online!
fonte
Pari / GP , 31 bytes
Experimente online!
fonte
Matlab,
3634 bytesEconomizou 2 bytes graças a Tom Carpenter.
Uma implementação muito ingênua usando funções internas:
fonte
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 bytes
Experimente online!
Constrói
r
, a lista de números primos <= n; se n é primo, entãon
é olen(r)
'ésimo primo. Então n é um super primo se n em re len (r) em r.fonte
Python 2 , 79 bytes
Experimente online!
fonte
Julia 0,6, 61 bytes
retorne 1 se x for um super-prime, 0 caso contrário.
sem usar uma função do tipo isprime.
fonte