Decidere se un intervallo contiene un numero primo


14

Qual è la complessità nel decidere se un intervallo dei numeri naturali contiene un numero primo? Una variante del setaccio di Eratostene fornisce un algoritmo , in cui L è la lunghezza dell'intervallo e nasconde i fattori poliarlogaritmici nel punto iniziale dell'intervallo; possiamo fare di meglio (solo in termini di L )?O~(L)L~L


1
Nitpick: The Sieve of Eratosthenes non ti dà semplicemente fattori poliarlogaritmici nel punto di partenza, anche per un intervallo di lunghezza 1. È infatti possibile verificare che un numero sia primo sia il tempo che è polilaritmico nel numero (= polinomiale nella dimensione della rappresentazione) ma ciò richiede un algoritmo molto più sofisticato del setaccio di Eratostene.
Vanessa,

1
@Squark True, avrebbe dovuto specificare "pseudoprime rispetto a una determinata base di fattori". Sebbene il punto di partenza dell'intervallo si allarghi, il costo atteso del test di primalità va a zero ...
Elliot Gorokhovsky

Risposte:


27

Disclaimer : non sono un esperto di teoria dei numeri.

Risposta breve : se sei disposto ad assumere "congetture teoriche numeriche ragionevoli", allora possiamo dire se c'è un numero primo nell'intervallo nel tempo p o l y l o g ( n ) . Se non siete disposti a fare una tale ipotesi, poi c'è un bel algoritmo a causa di Odlyzko che raggiunge n 1 / 2 + o ( 1 )[n,n+Δ]polylog(n)n1/2+o(1) , e credo che questo è il più noto.

Link molto utile con molte informazioni utili su un problema strettamente correlato : progetto PolyMath su algoritmi deterministici per la ricerca di numeri primi .

Risposta lunga :

Questo è un problema difficile, un'area attiva di ricerca, e sembra essere intimamente connesso alla difficile questione di colmare le lacune tra i numeri primi. Il tuo problema è moralmente molto simile al problema di trovare deterministicamente un numero primo tra e 2 n , che recentemente è stato oggetto di un progetto PolyMath . (Se vuoi davvero approfondire queste domande, quel link è un ottimo punto di partenza.) In particolare, i nostri migliori algoritmi per entrambi i problemi sono essenzialmente gli stessi.n2n

In entrambi i casi, l'algoritmo migliore dipende fortemente dalla dimensione degli spazi tra i primi. In particolare, se è tale che c'è sempre un numero primo tra n e n + f ( n ) (e f ( n ) può essere calcolato in modo efficiente), allora possiamo sempre trovare un numero primo nel tempo p o l y l o g ( n ) f ( n ) come segue. Per determinare se esiste un numero primo tra n e Δf(n)nn+f(n)f(n)polylog(n)f(n)nn+Δ, verificare innanzitutto se . In tal caso, emettere sì. Altrimenti, basta scorrere gli interi tra n e n + Δ e testare ciascuno per primalità e rispondere sì se trovi un numero primo e no altrimenti. (Questo può essere fatto in modo deterministico, motivo per cui trovare in modo deterministico un numero primo tra n e 2 nΔf(n)nn+Δn2n è così strettamente correlato alla determinazione se esiste un numero primo in un determinato intervallo.)

Se i numeri primi si comportano come pensiamo fanno, allora questo è il fine della storia (fino a fattori). In particolare, ci aspettiamo di essere in grado di prendere f ( n ) = O ( log 2 n ) . Questa è conosciuta come la congettura di Cramér dopo Harald Cramér, e dimostrando che al momento sembra molto fuori portata. Ma, per quanto ne so, è ampiamente creduto. (Si arriva a questa congettura, ad esempio, dall'euristico che i numeri primi si comportano come l'insieme casuale di numeri interi ottenuti includendo ciascun numero intero n 3polylog(n)f(n)=O(log2n)n3indipendentemente a caso con probabilità 1/logn .)

Esistono molte congetture che implicano il limite molto più debole , comela congettura di Legendre. (Non sono a conoscenza di congetture che sono note per implicare un limite intermedio, anche se immagino che esistano.) E, l'ipotesi di Riemann è nota per implicare il limite similef(n)O(f(n)O(n). Quindi, se assumi queste congetture, fondamentalmente abbini l'algoritmo di Odlyzko (con un fattoren o ( 1 )f(n)O(nlogn)no(1) ) con un algoritmo molto più semplice.

Credo che il miglior limite incondizionato in questo momento sia causa di Baker, Harman e Pintz . Quindi, se si assume nulla, quindi l'algoritmo di Odlyzko batte l'algoritmo ovvio di circa un fattore di n 0.025 .O~(n0.525)n0.025


3
Questa risposta è fantastica !! Questi approcci possono essere adattati per decidere se ci sono numeri primi nell'intervallo in cui k è un dato numero? E qual è la complessità in questo caso? kk
Michael Wehar,

3
@MichaelWehar Bella domanda. L'algoritmo di Odlyzko sicuramente può, dal momento che il suo algoritmo calcola effettivamente la funzione di conteggio primo π(x):=\# primes below xpn+kpnpn+1pn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.