Esta es la secuencia A054261 .
El ésimo número de contención prime es el número más bajo que contiene los primeros números primos como subcadenas. Por ejemplo, el número es el número más bajo que contiene los primeros 3 primos como subcadenas, lo que lo convierte en el tercer número de contención de primos.
Es trivial descubrir que los primeros cuatro números de contención primos son , , y , pero luego se vuelve más interesante. Como el próximo número primo es 11, el siguiente número de contención primo no es , pero es ya que se define como el número más pequeño con la propiedad.
Sin embargo, el verdadero desafío llega cuando vas más allá de 11. El siguiente número de contención principal es . Tenga en cuenta que en este número, las subcadenas y se superponen. El número también se superpone con el número .11
13
3
13
Es fácil demostrar que esta secuencia está aumentando, ya que el siguiente número debe cumplir con todos los criterios del número anterior y tener una subcadena más. Sin embargo, la secuencia no está aumentando estrictamente, como lo demuestran los resultados para n=10
y n=11
.
Entrada
Un solo entero n>0
(supongo que también podría tenerlo indexado en 0, luego haciendo n>=0
)
Salida
O el n
número de contención primo th, o una lista que contiene los primeros n
números de contención primos.
Los números que he encontrado hasta ahora son:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Tenga en cuenta que n = 10
y n = 11
son el mismo número, ya que es el número más bajo que contiene todos los números , pero también contiene .
Dado que este es el código de golf marcado, ¡juegue al golf! Se permiten soluciones de fuerza bruta, pero su código tiene que funcionar para cualquier entrada en teoría (lo que significa que no puede concatenar los primeros n primos). ¡Feliz golf!
P
operador crea una asignación explícita para verificar los números primos en el número (en lugar de verificar si el número está en la matriz de números primos)? Esta es una solución hermosa, dudo que pueda hacer cualquier solución con menos comandos.P
es producto. Básicamente, multiplica todos los valores en una lista. ElÅp
creará una lista con la primeran
cantidad de primos, donden
está la entradaI
en este caso. Elå
comprobará para cada número en la lista de números primos si están en el número actual de la lista infinita, donde se dará1
a Truthy y0
para Falsey-. Entonces, el producto básicamente verifica si todos son verdaderos; si todos los números primos están dentro del número actual. Si alguno es 0, losP
resultados también falsey. Pero si todo es así1
, losP
resultados son verdaderos y el.Δ
bucle se detiene.1µNIÅpåP
. Para aquellos que no conocen 05AB1E, una explicación para la mía también:1µ
- hasta que la variable del contador llegue a 1 (comienza en 0, aumenteN
gradualmente en 1 y realice:NIÅpåP
- compruebe si aparecen todos los primeros primos <input>N
y , si es así, incremente la variable del contador automáticamente. Devuelve el valor final de N.X
lugar de1
, por razones), pero cambié a esto ya que nunca tuve la oportunidad de usarla∞
:)Jalea , 11 bytes
Pruébalo en línea!
Fuerza bruta simple. No estoy completamente seguro de cómo
#
funciona el arity, por lo que puede haber margen de mejora.Cómo funciona
fuente
wⱮẠ¥1#ÆN€
Guarda dos bytes.Java 8, 143 bytes
Pruébalo en línea.
NOTAS
n=7
.n=9
debido al límite de tamaño deint
(máximo de2,147,483,647
).int
a along
, el máximo se incrementa a una salida por debajo9,223,372,036,854,775,807
(¿sobren=20
qué creo?)java.math.BigInteger
el máximo se puede aumentar a cualquier tamaño (en teoría), pero será de alrededor de +200 bytes al menos debido a la verbosidad dejava.math.BigInteger
los métodos.Explicación:
fuente
JavaScript (ES6),
105 ... 9291 bytesPruébalo en línea!
¿Cómo?
Comentado
fuente
Ruby , 58 bytes
Pruébalo en línea!
Fuerza bruta, funciona hasta 7 en TIO.
fuente
Pyth , 14 bytes
Pruébalo en línea!
Pyth , 15 bytes
Ligeramente más rápido pero 1 byte más largo.
Pruébalo en línea!
fuente
Jalea , 14 bytes
Pruébalo en línea!
fuente
Carbón , 42 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Construya los primeros
n
números primos por división de prueba de todos los enteros por todos los números primos encontrados previamente.Recorre todos los enteros hasta encontrar uno que contenga todos los números primos como subcadenas.
Transmita el resultado a una cadena e imprima implícitamente.
La velocidad del programa se puede duplicar a un costo de un byte reemplazando el último
≦⊕η
con,≦⁺²η
pero aún es demasiado lento para calcularn>6
.fuente
Perl 6 ,
6359 bytes-4 bytes gracias a nwellnhof
Pruébalo en línea!
Una solución de fuerza bruta que agota el tiempo en TIO para números superiores a 5, pero estoy bastante seguro de que funciona correctamente. Encuentra el primer número positivo que contiene los primeros
n
números primos. Aquí hay una solución que no se agotan=6
.Explicación:
fuente
Python 2 , 131 bytes
Pruébalo en línea!
f
Es la función.fuente
Python 2 , 91 bytes
Pruébalo en línea!
fuente
SAS, 149 bytes
La entrada se ingresa después de la
cards;
declaración, así:Da salida a un conjunto de datos
p
, con el resultadov
, con una fila de salida para cada valor de entrada. Técnicamente debería funcionar para todos los casos de prueba dados (el número entero máximo con precisión total en SAS es 9,007,199,254,740,992), pero me di por vencido después de dejarlo pensar durante 5 minutos en n = 8.Explicación:
fuente
Haskell , 102 bytes
Pruébalo en línea!
Explicación / Ungolfed
Como ya hemos
Data.List
importado, también podríamos usarlo: en lugar de lo viejotake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
, podemos usar otra forma de generar todos los números primos que necesitamos. Es decir, generamos una cantidad suficiente de compuestos y los utilizamos junto con(\\)
:Usarπ( n ) < n2Iniciar sesión( n2) . El resto es solo una simple lista de comprensión:
n*n
basta porquefuente
Japt,
2018 bytesLejos de mi mejor trabajo, estaba feliz de hacerlo funcionar después del día que tuve. ¡Estoy seguro de que terminaré golpeándolo en el alcohol más tarde!
Pruébelo : tarda 13 segundos en ejecutarse para una entrada de
7
, arroja un tambaleante después de eso (la versión actualizada es una mierda5
para mí, pero ese podría ser mi teléfono).fuente
F.h()
solo y parece estar roto; ETH debe haber cambiado algo.