Esta pregunta será un giro en la búsqueda del n
número primo th.
Reto
Debe escribir un programa que tomará una entrada n
y generará el n
número primo th cuya representación decimal contiene la representación decimal de n
como una subcadena.
¿Confuso? Aquí hay unos ejemplos.
n=1
Primes: 2, 3, 5, 7, 11
^1 first prime that contains a 1
Output: 11
n=2
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 second prime that contains a 2
Output: 23
n=3
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 ^3 third prime that contains a 3
Output: 23
n=10
Primes: 2, 3, 5, 7, 11, ..., 97, 101, 103, 107, 109, ..., 997, 1009, 1013, 1019, 1021, 1031, 1033
^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 tenth prime that contains a 10
Output: 1033
Este es el código golf , por lo que gana el conteo de bytes más bajo.
Si algo es confuso, por favor deje un comentario.
Hot Network Questions
lista.Respuestas:
05AB1E , 8 bytes
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
Pyth - 11 bytes
Test Suite .
fuente
Python 2,
676562 bytesPruébalo en Ideone .
Cómo funciona
Usamos un corolario del teorema de Wilson :
En todo momento, la variable p es igual al cuadrado del factorial de m - 1 .
Si k <n ,
k/n
rendirá 0 y f se llama de forma recursiva. m se incrementa, p se actualiza y k se incrementa si y solo si m es un primo que contiene n .Este último se consigue añadiendo el resultado de
p%m*(`n`in`m`)
a k . Según el corolario del teorema de Wilson, si m es primo,p%m
devuelve 1 , y si no, devuelve 0 .Una vez k alcances n , encontramos q , el n º primordial que contiene n .
Estamos en la próxima llamada durante la verificación, entonces m = q + 1 .
k/n
devolverá 1 , y los operadores bit a bit-~
incrementarán ese número una vez por cada llamada de función. Dado que se requieren q - 1 llamadas a f para incrementar m de 2 a q + 1 , la llamada externa a f devolverá 1 + q - 1 = q , según lo previsto.fuente
Bash, 27 bytes
primes
proviene de bsdgames.Toma la entrada como un argumento de línea de comando y sale en STDOUT.
fuente
Jalea , 13 bytes
Pruébalo en línea!
fuente
Mathematica, 75 bytes
Todavía puede ser golfable.
fuente
Java,
194180173171112 BytesCódigo:
Sin golf:
fuente
P {
yString[] s
. Y 2. actualmente solo está dando la salida10
, pero el desafío del código de golf era tomar una entradan
y dar la salida adecuada en función de esa entrada. Además, puede encontrar esto interesante: consejos para jugar al golf en Java.Ruby,
6261 bytesRequiere la
-rprime
bandera (+8 bytes).fuente
Julia,
6160 bytesPruébalo en línea!
fuente
MATL , 18 bytes
Pruébalo en línea!
Explicación
Esto genera números primos en orden usando un
do...while
bucle. Para cada cebado, se prueba la condición (y se consume el cebado). Si está satisfecho, esa prima se empuja a la pila nuevamente. El número de elementos en la pila se usa como recuento de cuántos primos calificados hemos encontrado. Cuando hay suficientes, se muestra el último.fuente
Pyke, 15 bytes
Pruébalo aquí!
fuente
Bash + GNU coreutils, 66 Bytes
A diferencia de la solución de @ Doorknob, esta solo necesita cosas que están instaladas en cada GNU / Linux:
fuente
seq 1e20|factor|grep -Po "(?<=: )\d*$2\d$"|sed $1q\;d
for((...)){
, debe haber un espacio o una nueva línea, por lo que no importa. Antes del cierre}
, debe haber una;
o una nueva línea, por lo que tampoco importa.Perl 6 , 41 bytes
Explicación:
Prueba:
fuente
Java 8,
192183181171 bytes (programa completo)Pruébalo en línea.
Explicación:
Java 8, 105 bytes (función lambda)
Pruébalo en línea.
Igual que el anterior, pero con una
n
entrada entera y sin el material de clase detallado.fuente
&&
con&
y quitar?
de su expresión regular.&&
y&
por alguna razón ..Clojure, 118 bytes
Solo obtiene el enésimo elemento de la secuencia infinita perezosa de números que son primos y tienen
n
en su representación de cadena.Puedes probarlo aquí: https://ideone.com/ioBJjt
fuente
En realidad, 16 bytes
Pruébalo en línea!
Explicación:
fuente
PowerShell v2 +,
10899 bytesOoof La falta de cualquier tipo de cálculo / verificación primo incorporado realmente duele aquí.
Toma entrada
$n
, ingresa unfor()
bucle infinito . Cada iteración, usamos unfor
bucle envuelto alrededor del comprobador de expresiones regulares de PowerShell regex (h / t para Martin) para convertirlo en un generador principal incrementando$i
cada vez a través del bucle. (Por ejemplo, ejecutar solofor(){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$i}}
generará resultados2, 3, 5, 7...
separados por nuevas líneas).Luego, una simple
-like
verificación para ver si$n
está en algún lugar$i
e incrementar nuestro contador$o
. Si hemos llegado a donde$n
y$o
son iguales, salida$i
yexit
. De lo contrario, continuamosfor
hasta encontrar el próximo primo y el proceso se repite.fuente
APL (NARS), 39 caracteres, 78 bytes
1π es el siguiente número primo ...; prueba:
pero eso ya a las 20 sale el espacio de la pila ... En cambio, esto a continuación parece estar bien, incluso si ha durado un poco más (61 caracteres)
fuente
Añadir ++ , 36 bytes
Pruébalo en línea!
Bastante ineficiente. Itera sobre cada enteroyo tal que i ≤ 25 x2 y filtra compuestos y primos que no contienen norte . Finalmente, tomamos elnorte El valor de los enteros restantes.
fuente
Japt
-h
,151311 bytesIntentalo
fuente