Quelle est la complexité de décider si un intervalle des nombres naturels contient un nombre premier? Une variante du tamis d'Ératosthène donne un algorithme , où est la longueur de l'intervalle et cache les facteurs poly-logarithmiques au point de départ de l'intervalle; pouvons-nous faire mieux (en termes de seul)?
cc.complexity-theory
ds.algorithms
nt.number-theory
comp-number-theory
Elliot Gorokhovsky
la source
la source
Réponses:
Avertissement : je ne suis pas un expert en théorie des nombres.
Réponse courte : si vous êtes prêt à supposer des "conjectures théoriques des nombres raisonnables", alors nous pouvons dire s'il y a un nombre premier dans l'intervalle dans le temps p o l y l o g ( n ) . Si vous n'êtes pas prêt à faire une telle hypothèse, alors il y a un bel algorithme en raison de Odlyzko qui permet d' atteindre n 1 / 2 + o ( 1 )[n,n+Δ] polylog(n) n1/2+o(1) , et je crois que c'est le plus connu.
Lien très utile avec de nombreuses informations sur un problème étroitement lié : projet PolyMath sur les algorithmes déterministes pour trouver des nombres premiers .
Réponse longue :
Il s'agit d'un problème difficile, d'un domaine de recherche actif, qui semble intimement lié à la difficile question de la délimitation des écarts entre les nombres premiers. Votre problème est moralement très similaire au problème de trouver un nombre premier entre et 2 n de manière déterministe, qui a récemment fait l'objet d'un projet PolyMathn 2n . (Si vous voulez vraiment vous plonger dans ces questions, ce lien est un excellent point de départ.) En particulier, nos meilleurs algorithmes pour les deux problèmes sont essentiellement les mêmes.
Dans les deux cas, le meilleur algorithme dépend fortement de la taille des espaces entre les nombres premiers. En particulier, si est tel qu'il y a toujours un nombre premier entre n et n + f ( n ) (et que f ( n ) peut être calculé efficacement), alors on peut toujours trouver un nombre premier p o l y l o g ( n ) ⋅ f ( n ) comme suit. Pour déterminer s'il existe un nombre premier entre n et n +f(n) n n+f(n) f(n) polylog(n)⋅f(n) n n+Δ , vérifiez d'abord si . Si oui, affichez oui. Sinon, parcourez simplement les entiers entre n et n + Δ et testez chacun pour la primauté et répondez oui si vous trouvez un nombre premier et non sinon. (Cela peut être fait de manière déterministe, c'est pourquoi la recherche déterministe d'un nombre premier entre n et 2 n est si étroitement liée à la détermination de l'existence d'un nombre premier dans un certain intervalle.)Δ≥f(n) n n+Δ n 2n
Si les nombres premiers se comportent comme nous pensons qu'ils le font, alors c'est la fin de l'histoire (jusqu'à facteurs). En particulier, nous nous attendons à pouvoir prendre f ( n ) = O ( log 2 n ) . Ceci est connu comme la conjecture de Cramér après Harald Cramér, et prouvant qu'elle semble très loin de la portée pour le moment. Mais, autant que je sache, il est largement admis. (On arrive à cette conjecture, par exemple, à partir de l'heuristique selon laquelle les nombres premiers se comportent comme l'ensemble aléatoire d'entiers obtenu en incluant chaque entier n ≥ 3polylog(n) f(n)=O(log2n) n≥3 indépendamment au hasard avec probabilité .)1/logn
Il existe de nombreuses conjectures qui impliquent la borne beaucoup plus faible , commela conjecture de Legendre. (Je ne connais pas de conjectures connues pour impliquer une borne intermédiaire, bien que j'imagine qu'elles existent.) Et, l'hypothèse de Riemann est connue pour impliquer la borne similairef(n)≤O( √f(n)≤O(n−−√) . Donc, si vous supposez ces conjectures, vous correspondez essentiellement à l'algorithme d'Odlyzko (jusqu'à un facteur den o ( 1 )f(n)≤O(n−−√logn) no(1) ) avec un algorithme beaucoup plus simple.
Je crois que la meilleure borne inconditionnelle en ce moment est raison de Baker, Harman et Pintz . Donc, si vous ne supposez rien, l'algorithme d'Odlyzko bat l'algorithme évident d'environ un facteur de n 0,025 .O˜(n0.525) n0.025
la source