Решение, содержит ли интервал простое число

14

В чем сложность определения, содержит ли интервал натуральных чисел простое число? Вариант решета Эратосфена дает алгоритм, где L является длина интервала и ~ Шкуры поли-логарифмические факторы в исходной точке интервала; мы можем сделать лучше (с точки зрения L только)?O~(L)LL

Эллиот Гороховский
источник
1
Nitpick: Сито Эратосфена не дает вам просто полилогарифмические факторы в начальной точке, даже для интервала длины 1. Действительно, можно проверить, что число простое - это время, которое является полилогарифмическим в числе (= полиномиальный по размеру представления), но для этого требуется алгоритм, намного более сложный, чем сито Эратосфена.
Ванесса
1
@Squark True, должен был указывать «псевдослучайность относительно заданной факторной базы». Хотя по мере того, как начальная точка интервала становится большой, ожидаемая стоимость тестирования простоты сводится к нулю ...
Эллиот Гороховский

Ответы:

27

Отказ от ответственности : я не эксперт в теории чисел.

Краткий ответ : если вы хотите принять «разумные теоретико-числовые гипотезы», то мы можем сказать, существует ли простое число в интервале во времени 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)n31/logn

f(n)O(n)f(n)O(nlogn)no(1)

O~(n0.525)n0.025

Ной Стивенс-Давидович
источник
3
ККэто заданное число? И какова сложность в этом случае?
Майкл Вехар
3
@MichaelWehar Хороший вопрос. Алгоритм Одлызко определенно может, так как его алгоритм фактически вычисляет функцию простого подсчетаπ(Икс)знак равно\ # простые числа ниже Икс, Для подхода, использующего промежутки между простыми числами, я не тот парень, которого нужно спрашивать. Очевидно, что это требует ограничений напN+К-пNв отличие от всего пN+1-пNи я просто не знаю много об этом. Может кто еще знает?
Ноа Стивенс-Давидович