Decidir si un intervalo contiene un número primo

14

¿Cuál es la complejidad de decidir si un intervalo de los números naturales contiene un primo? Una variante de la criba de Eratóstenes da una algoritmo, donde L es la longitud del intervalo y ~ cueros factores poli-logarítmicas en el punto de partida del intervalo; ¿Podemos hacerlo mejor (solo en términos de L )?O~(L)LL

Elliot Gorokhovsky
fuente
1
Nitpick: The Sieve of Eratosthenes no le da simplemente factores poli-logarítmicos en el punto de partida, incluso para un intervalo de longitud 1. De hecho, es posible verificar que un número es primo es el tiempo, que es polilogarítmico en el número (= polinomio en el tamaño de la representación) pero esto requiere un algoritmo mucho más sofisticado que el Tamiz de Eratóstenes.
Vanessa
1
@Squark True, debería haber especificado "pseudoprime en relación con una base de factores dada". Aunque a medida que el punto de partida del intervalo aumenta, el costo esperado de las pruebas de primalidad llega a cero ...
Elliot Gorokhovsky

Respuestas:

27

Descargo de responsabilidad : no soy un experto en teoría de números.

Respuesta corta : si está dispuesto a asumir "conjeturas de teoría de números razonables", entonces podemos decir si hay un primo en el intervalo en el tiempo p o l y l o g ( n ) . Si no estás dispuesto a hacer tal suposición, entonces hay una hermosa algoritmo debido a que logra Odlyzko n 1 / 2 + O ( 1 )[n,n+Δ]polylog(n)n1/2+o(1) , y creo que este es el más conocido.

Enlace muy útil con mucha información excelente sobre un problema estrechamente relacionado : el proyecto PolyMath sobre algoritmos deterministas para encontrar números primos .

Respuesta larga :

Este es un problema difícil, un área activa de investigación, y parece estar íntimamente relacionado con la difícil cuestión de cerrar las brechas entre los números primos. Su problema es moralmente muy similar al problema de encontrar un primo entre y 2n determinista, que recientemente fue objeto de unproyecto PolyMath2n . (Si realmente quiere profundizar en estas preguntas, ese enlace es un excelente lugar para comenzar). En particular, nuestros mejores algoritmos para ambos problemas son esencialmente los mismos.

En ambos casos, el mejor algoritmo depende en gran medida del tamaño de los espacios entre los primos. En particular, si es tal que siempre hay un primo entre n y n + f ( n ) (y f ( n ) se puede calcular de manera eficiente), entonces siempre podemos encontrar un primo en el tiempo p o l y l o g ( n ) f ( n ) de la siguiente manera. Para determinar si hay un primo entre , primero verifique si Δ f(n)nn+f(n)f(n)polylog(n)f(n) y n Δnn+Δ . Si es así, salida sí. De lo contrario, solo recorra los enteros entre n y n + Δ y pruebe cada uno de ellos para la primalidad y responda sí si encuentra un primo y no de lo contrario. (Esto se puede hacer de manera determinista, razón por la cual determinísticamente encontrar un primo entre n y 2 nΔf(n)nn+Δn2n está tan estrechamente relacionado con la determinación de si hay un primo en cierto intervalo).

Si los números primos se comportan como creemos que lo hacen, entonces este es el final de la historia (hasta factores de ). En particular, esperamos poder tomar f ( n ) = O ( log 2 n ) . Esto se conoce como conjetura de Cramér independientemente al azar con probabilidad 1 / logpolylog(n)f(n)=O(log2n) después de Harald Cramér, y demuestra que parece estar muy lejos de su alcance en este momento. Pero, que yo sepa, se cree ampliamente. (Se llega a esta conjetura, por ejemplo, a partir de la heurística de que los números primos se comportan como el conjunto aleatorio de enteros obtenido al incluir cada entero n31/logn .)

Hay muchas conjeturas que implican el límite mucho más débil f(n)O(n)f(n)O(nlogn)norteo(1) ) con un algoritmo mucho más simple.

O~(norte0,525)debido a Baker, Harman y Pintz . Entonces, si no asume nada, entonces el algoritmo de Odlyzko supera al algoritmo obvio en un factor aproximado denorte0,025.

Noah Stephens-Davidowitz
fuente
3
¡Esta respuesta es asombrosa! ¿Se pueden adaptar estos enfoques para decidir si hayk primos en el intervalo donde kes un numero dado? ¿Y cuál es la complejidad en este caso?
Michael Wehar
3
@MichaelWehar Buena pregunta. El algoritmo de Odlyzko definitivamente puede, ya que su algoritmo realmente calcula la función de conteo principalπ(X): =\ # primos a continuación X. Para el enfoque que utiliza espacios entre los números primos, no soy el tipo adecuado para preguntar. Obviamente, esto requiere límites enpagnorte+k-pagnorte, en lugar de solo pagnorte+1-pagnorte, y simplemente no sé mucho sobre esto. Tal vez alguien más lo sabe?
Noah Stephens-Davidowitz