Отказ от ответственности : я не эксперт в теории чисел.
Краткий ответ : если вы хотите принять «разумные теоретико-числовые гипотезы», то мы можем сказать, существует ли простое число в интервале во времени p o l y l o g ( n ) . Если вы не готовы сделать такое предположение, то есть красивый алгоритм из - за Odlyzko , который достигает п 1 / 2 + O ( 1 ) , и я считаю , что это самый известный.[ n , n +Δ]polylog(n)n1/2+o(1)
Очень полезная ссылка с множеством полезной информации о тесно связанной проблеме : проект PolyMath по детерминированным алгоритмам для поиска простых чисел .
Длинный ответ :
Это сложная проблема, активная область исследований, и, похоже, она тесно связана с трудным вопросом о границе между простыми числами. С моральной точки зрения ваша проблема очень похожа на проблему определения простого числа между и 2 n , которая недавно была предметом проекта PolyMath . (Если вы хотите действительно углубиться в эти вопросы, эта ссылка - отличное место для начала.) В частности, наши лучшие алгоритмы для обеих задач по сути одинаковы.n2n
В обоих случаях лучший алгоритм сильно зависит от размера промежутков между простыми числами. В частности, если таково, что всегда есть простое число между n и n + f ( n ) (и f ( n ) может быть эффективно вычислено), то мы всегда можем найти простое число во времени p o l y l o g ( n ) ⋅ f ( n ) следующим образом. Чтобы определить, есть ли простое число между n и n +f(n)nn+f(n)f(n)polylog(n)⋅f(n)n , сначала проверьте, если Δ ≥ f ( n ) . Если так, выведите да. В противном случае, просто переберите целые числа между n и n + Δ и проверьте каждый на предмет простоты, и ответьте «да», если найдете простое число, и «нет» в противном случае. (Это можно сделать детерминистически, поэтому детерминистическое нахождение простого числа между n и 2 n так тесно связано с определением, есть ли простое число в определенном интервале.)n+ΔΔ≥f(n)nn+Δn2n
polylog(n)f(n)=O(log2n)n≥31/logn
f(n)≤O(n−−√)f(n)≤O(n−−√logn)no(1)
O˜(n0.525)n0.025