Fondo
Un superprimo es un número primo cuyo índice en la lista de todos los primos también es primo. La secuencia se ve así:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Esta es la secuencia A006450 en el OEIS .
Reto
Dado un número entero positivo, determine si es un superprime.
Casos de prueba
2: falso 3: cierto 4: falso 5: cierto 7: falso 11: cierto 13: falso 17: cierto 709: verdadero 851: falso 991: verdadero
Tanteo
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
fuente
fuente
Respuestas:
Jalea , 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
Mathematica,
2623 bytesGracias a user202729 por guardar 3 bytes.
Esto hace uso del hecho de que Mathematica deja la mayoría de las expresiones sin sentido sin evaluar (en este caso, la lógica
And
de dos números) yMap
puede aplicarse a cualquier expresión, no solo a listas. Por lo tanto, calculamos laAnd
entrada y su índice primo, que permanece así, y luego realizamosMap
la prueba de primalidad sobre esta expresión que convierte los dos operandos delAnd
en booleanos, de modo queAnd
luego puedan evaluarse.fuente
PrimeQ/@(#&&PrimePi@#)&
.Jalea , 6 bytes
Pruébalo en línea!
Utiliza la misma técnica que mi respuesta de Japt: Genere los números primos hasta n , obtenga el índice de n en esa lista y verifique la primalidad. Si n no es primo, el índice es 0 , que tampoco es primo, por lo que 0 se devuelve de todos modos.
fuente
Japt ,
1311 bytes¡Pruébalo en línea!
Explicación
Esto es realmente muy sencillo, a diferencia de mi presentación original:
fuente
Python 3 ,
1049793 bytesDevuelve
0
/1
, como máximo 4 bytes más si tiene que serTrue
/False
.Pruébalo en línea!
fuente
f
, puede reformatear su código de esta manera y excluirlo del recuento de bytes.Jalea , 7 bytes
Pruébalo en línea!
ÆC
cuenta el número de números primos menor que o igual a la entrada (así, si la entrada es el n º prime, devuelve n ). LuegoÆP
prueba este índice de primalidad. Finalmente,a
hace un AND lógico entre este resultado yÆP
(prueba de primalidad) de la entrada original.fuente
Haskell , 62 bytes
Pruébalo en línea! Uso:
f 991
rendimientosTrue
.fuente
05AB1E , 6 bytes
Pruébalo en línea!
Explicación
fuente
Pyth , 12 bytes
Pruébalo en línea!
Explicación
fuente
Pyke, 8 bytes
Pruébalo aquí!
fuente
Perl 6 , 46 bytes
Pruébalo en línea!
fuente
QBIC , 33 bytes
Explicación
fuente
Mathematica,
3529 bytes-6 bytes de @MartinEnder
fuente
P@P@Range@#
Debería ahorrar un montón.Haskell, 121 bytes
fuente
(\(_,x)->x)
essnd
,(\(x,_)->p x)
es(p.fst)
. Tantofst
ysnd
están en preludio, así que no hay necesidad de importar.r x=elem x$take x s
. Sin embargo, en este caso se puede ir pointfree (introducción de acentos abiertos de nuevo) y omitir el nombre de la función:elem<*>(`take`s)
.Positron , 148 bytes
Pruébalo en línea!
fuente
Pari / GP , 31 bytes
Pruébalo en línea!
fuente
Matlab,
3634 bytesGuardado 2 bytes gracias a Tom Carpenter.
Una implementación muy ingenua usando funciones incorporadas:
fuente
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 bytes
Pruébalo en línea!
Construcciones
r
, la lista de primos <= n; si n es primo, entoncesn
es ellen(r)
'primer primo. Entonces n es un superprime si if n en r y len (r) en r.fuente
Python 2 , 79 bytes
Pruébalo en línea!
fuente
Julia 0.6, 61 bytes
devuelve 1 si x es un superprimado, 0 de lo contrario.
sin usar una función isprime-kind.
fuente