Una brecha principal es la diferencia entre dos primos consecutivos. Más específicamente, si p y q son primos con p < q y p +1, p +2, ..., q −1 no son primos, los primos p y q definen un espacio de n = q - p . Se dice que la brecha comienza por p , y tiene una longitud n .
Se sabe que existen brechas primarias arbitrariamente grandes. Es decir, dado n existe un espacio primario de longitud n o mayor. Sin embargo, es posible que no exista un espacio libre de longitud exactamente n (pero sí uno mayor)
El reto
Dado un entero positivo n
, genera el primer primo que comienza un espacio de longitud n
o mayor.
Como ejemplo, para la entrada 4
la salida debería ser 7
, porque 7 y 11 son los primeros números primos consecutivos que difieren en al menos 4 (los espacios anteriores son 1, de 2 a 3; 2, de 3 a 5; y 2, de 5 a 7). Para la entrada, 3
la respuesta también debe ser 7
(no hay espacios de longitud 3).
Reglas adicionales
El algoritmo debería funcionar teóricamente para arbitrariamente alto
n
. En la práctica, es aceptable si el programa está limitado por el tiempo, la memoria o el tamaño del tipo de datos.La entrada y la salida se pueden tomar por cualquier medio razonable .
Se permiten programas o funciones , en cualquier lenguaje de programación . Las lagunas estándar están prohibidas.
El código más corto en bytes gana.
Casos de prueba
Input -> Output
1 2
2 3
3 7
4 7
6 23
10 113
16 523
17 523
18 523
30 1327
50 19609
100 370261
200 20831323
fuente
Respuestas:
Gaia , 6 bytes
Esto es extremadamente ineficiente (el
16
caso de prueba tomó más de una hora para calcular en mi máquina).Pruébalo en línea!
Explicación
La secuencia parece tener la propiedad de que a (n) <= 2 ^ n .
fuente
Gelatina ,
10, 9, 810 bytesPruébalo en línea!
¡Dos bytes guardados gracias a @Dennis! (y luego se volvió a agregar debido a casos extremos)
Explicación:
fuente
#
contaré desde la entrada aquí) Parece razonable suponer esto, pero por mi parte no tengo idea si es una suposición válida. EDITAR: FYI para arreglar (si es necesario) el prefijo con2ð
Mathematica, 30 bytes
Pruébalo en línea!
Mathematica, 35 bytes
Pruébalo en línea!
Mathematica, 77 bytes
fuente
p
yq
son primos ... El primer código parece válida, sin embargo, ya que sólo llega hasta 65535 a menos que alimentar de forma explícita el argumentoMaxIterations
.(For[t=2,NextPrime@t-t<#,t++];t)&
Haskell ,
106102 93 77 7372 bytesEsto genera una lista infinita de primos primero, luego busca las brechas principales. La lista principal fue tomada de aquí . Probablemente se puede acortar, pero aún no he descubierto cómo :)
¡Gracias a @BruceForte por -4 bytes y @Zgrab por -1 byte!
Pruébalo en línea!
fuente
zip=<<tail$[...]
Guarda un byte.n
, se detendrá después de un período de tiempo finito :) (Haskell no es un procedimiento, sino un lenguaje funcional con evaluación perezosa.)Pyth - 14 bytes
Filtra desde [1, inf), filtra por primality (
P_
) y que el siguiente primo filtrado desde (n, inf), tiene un valor diferente> = a la entrada.Test Suite .
fuente
PowerShell ,
979691 bytesPruébalo en línea!
Toma entrada
$n
, establece$a
e$b
igual a2
, luego ingresa unfor
bucle infinito . En el interior, seguimos adelante$b
hasta llegar al próximo prime . Entonces, comprobamos si$b-$a
(es decir, la brecha) es-g
reaterthanore
qual a$n
. Si es así, sacamos$a
yexit
. De lo contrario, establecemos$a
ser$b
e incrementar$b
e iniciar nuestra próxima búsqueda.Advertencia: Esto es lento para entradas grandes. De hecho, no puede completar las
50
pruebas o más altas dentro del tiempo de espera de 60 en TIO. Oh bien.fuente
Casco ,
131110 bytesPruébalo en línea!
fuente
Mathematica, 39 bytes
Versión de 33 bytes (no válida porque solo sube a la 65535ª prima)
fuente
Python 2 ,
9688 bytes- 8 bytes Gracias a @Maltysen
Pruébalo en línea!
fuente
Perl 6 , 63 bytes
Pruébalo en línea!
fuente
Mathematica, 37 bytes
Function
con el primer argumentog
. Comenzando con2
, aplica la funciónp=NextPrime
repetidamente siempre que sep@#-#<g&
déTrue
(la brecha entre el cebado actual y el próximo cebado es menor queg
).fuente
R + gmp, 55 bytes
Utiliza la función nextprime de la biblioteca gmp
fuente
cat(s)
al final. La impresión implícita no funciona en programas completos.Ruby , 61 bytes
Pruébalo en línea!
fuente
C =
141109 bytes; C ++, D = 141 bytes; C #, Java = 143 bytesADVERTENCIA : ALGORITMO DE BAJO RENDIMIENTO
Este código no pudo calcular la brecha principal
g(200)
en 10 minutos. porg(100)
, necesitó 10 segundos (versión C ++)Versión C ++ y D:
C # y versión de Java:
Versión C, -32 bytes gracias a ceilingcat:
Diferencias entre la versión C # / Java y C / C ++ / D:
!p(n)
<==>p(n)==0
fuente
return 0; return 1
y eliminar el!
antesp(++n)
d%i==0
y!(d%i)
puede serd%i<0
. Además, el uso sistema de plantillas D's la solución en D puede ser:T p(T)(T d){for(T i=2;i<=d/2;++i)if(d%i<1)return 0;return 1;}T g(T)(T d){T f=2,n=3;while(n-f<d){f=n;do++n;while(!p(n));}return f;
. (La eliminación de llaves después delfor
y tambiéndo
podría aplicarse a C ++)int p(int d){for(int i=2;i<=d/2;++i)if(!(d%i))return 0;return 1;}int g(int d){int f=2,n=3;while(n-f<d){f=n;do++n;while(!p(n));}return f;}
<- eso debería funcionar para la versión C ++D,
127125122 bytesADVERTENCIA: ¡ALGORITMO DE BAJO RENDIMIENTO!
Pruébalo en línea!
¿Cómo?
HatsuPointerKun nuevamente, pero haré la hechicería específica de D.
T p(T)(T d)
, y es más corto que C ++r=d%i++<1||r
, D travesuras específicas, podrían funcionar en C / C ++, pero no lo sé.p(++n)
, igual que el anterior, no estoy seguro si funciona en C / C ++while(p(++n)){}
, aquí se ve por qué D es malo jugando al golf, no se puede usar;
como una declaración vacía.fuente
Perl 6 ,
4137 bytesPruébalo en línea!
Explicación
fuente
QBIC , 28 bytes
Explicación
fuente
05AB1E , 9 bytes
Pruébelo en línea o verifique todos los casos de prueba . (Test Suite no contiene los dos últimos casos de prueba, porque TIO agota el tiempo para esos).
Como la otra pregunta está cerrada como un engaño de esta , estoy publicando mi respuesta aquí también.
Explicación:
fuente
Java 8,
9992 bytesPruébalo en línea. (Se excluye el caso de prueba más grande, porque se agota el tiempo en TIO)
Explicación:
fuente
Ordenado , 33 bytes
Pruébalo en línea!
O 28 caracteres / 34 bytes:
{x:({v:⊟v≤-x}↦primes+2)@0@0}
Explicaré esto usando un equivalente ASCII equivalente:
fuente
APL (NARS), 36 caracteres, 72 bytes
1π es la función "próximo primo"; prueba:
fuente