Determinare se esiste un numero primo in un intervallo noto in P o NP-completo?


13

Ho visto da questo post su StackOverflow che ci sono alcuni algoritmi relativamente veloci per setacciare un intervallo di numeri per vedere se c'è un numero primo in quell'intervallo. Tuttavia, ciò significa che il problema decisionale generale di: (Esiste un numero primo in un intervallo?) È in P. (C'erano molte risposte a quel post che non ho letto, quindi mi scuso se questa domanda è un duplicato o non necessario).

Da un lato, se l'intervallo è abbastanza grande (ad esempio ), allora si applica qualcosa come il Postulato di Bertrand e in questo intervallo c'è sicuramente un numero primo. Tuttavia, so anche che ci sono arbitrariamente grandi lacune tra due numeri primi (ad esempio [ N ! , N ! + N ] . [N,2N][N!,N!+N]

Anche se il problema decisionale è in PI, non vedo come il problema di ricerca corrispondente sia anche trattabile perché, quindi potremmo non essere in grado di attingere alle stesse proprietà riguardanti la distribuzione nota di numeri primi quando si esegue la ricerca binaria.

Risposte:


17

Quindi il tuo problema è il seguente:

Input: numeri interi Domanda: esiste un numero primo in [ , u ] ?,u
[,u]

Per quanto ne so, non è noto se il problema sia o meno in P.

Ecco cosa so:

  • Il test di primalità (dato un singolo numero, verifica se è primo) è in P, quindi se l'intervallo è abbastanza piccolo, puoi testare esaurientemente ogni numero nell'intervallo per vedere se è primo, ma questo non porta a un algoritmo generale.

  • Se la congettura di Cramer è vera, allora il problema è nella congettura di P. Cramer che lo spazio tra i numeri primi consecutivi vicino a è O ( ( log n ) 2 ) , quindi il seguente algoritmo sarà in P: iterare attraverso i numeri , + 1 , + 2 , + 3 , , testando ciascuno se è primo; se ne trovi uno che è primo, fermati immediatamente con una risposta sì; se si colpisce la u , fermare con una risposta. La congettura di Cramer ci dice che ti fermerai dopo la maggior parte di OnO((logn)2),+1,+2,+3,...u test di primalità, in modo che l'algoritmo verrà eseguito in tempo polinomiale.O((log)2)

    Sfortunatamente, i risultati noti sui gap primari non sembrano abbastanza forti da dimostrare incondizionatamente che il problema è in P.

  • r[,u][,u]u1/lognO(logu)[,u]O((u-l)log(u-l))

  • Probabilmente si possono applicare metodi di setacciamento per migliorare il tempo di esecuzione in pratica (ad esempio, per evitare di fare qualsiasi test di primalità su numeri che sono divisibili per un piccolo numero primo). Non so se si possa dimostrare che ciò possa portare a un miglioramento asintotico.

  • Grazie a queste tecniche, il problema è probabilmente facile nella pratica.

  • A causa delle osservazioni di cui sopra, personalmente dubito che il problema sia NP-completo.


O(u)

O(poli(logu))

O(poli(logu))O(poli(u))

loguu

Non c'è bisogno, hai chiarito la mia confusione. Molte grazie!
Quelklef,
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.