Next: 4.6. Как проверить большое
Up: 4. Алгоритмические проблемы теории
Previous: 4.4. Как отличить составное
Contents: Содержание
Мы не будем описывать здесь
историю этой задачи, рекомендуем обратиться
к книге [6] и обзорам [8,9]. Конечно
же, большие простые числа можно строить сравнительно быстро. При этом можно
обеспечить их случайное распределение в заданном диапазоне величин. В
противном случае теряла бы всякий практический смысл система шифрования
RSA. Наиболее эффективным средством построения простых чисел является
несколько модифицированная малая теорема Ферма.
Теорема 4.
Пусть , - нечетные натуральные числа,
, причем для
каждого простого делителя числа существует целое число
такое, что
|
(10) |
Тогда каждый простой делитель
числа
удовлетворяет сравнению
Доказательство.
Пусть - простой делитель числа , а - некоторый делитель .
Из
условий (10) следует, что в поле вычетов справедливы соотношения
|
(11) |
Обозначим буквой
порядок элемента
в
мультипликативной группе поля
.
Первые два из соотношений (
11)
означают, что
входит в разложение на простые
множители числа
в степени такой же,
как и в разложение
, а последнее - что
делится на
.
Таким образом, каждый простой делитель числа
входит в
разложение
в степени не меньшей, чем в
, так что
делится на
. Кроме
того,
четно. Теорема 2 доказана.
Следствие .
Если выполнены условия теоремы 2 и , то - простое
число.
Действительно, пусть
равняется произведению не менее двух простых чисел.
Каждое из них, согласно утверждению теоремы 2, не меньше, чем .
Но тогда
.
Противоречие и доказывает
следствие.
Покажем теперь, как с помощью последнего утверждения, имея большое
простое число , можно построить существенно большее простое число .
Выберем для этого случайным образом четное число на промежутке
и положим . Затем проверим
число на отсутствие
малых простых делителей, разделив его на малые простые числа;
испытаем некоторое количество раз с помощью
алгоритма 5. Если при этом выяснится, что -
составное число, следует выбрать
новое значение и опять повторить вычисления. Так следует делать до тех пор,
пока не будет найдено число ,
выдержавшее испытания алгоритмом 5 достаточно
много раз. В этом случае появляется надежда на то, что -
простое число, и
следует попытаться доказать простоту с помощью тестов теоремы 2.
Для этого можно случайным образом выбирать число , , и
проверять для него выполнимость соотношений
|
(12) |
Если при выбранном
эти соотношения выполняются, то, согласно следствию из
теоремы 2, можно утверждать, что число
простое. Если же эти условия
нарушаются, нужно выбрать другое значение
и повторять эти операции до тех
пор, пока такое число не будет обнаружено.
Предположим, что построенное число действительно является простым.
Зададимся вопросом, сколь долго придется перебирать числа , пока не будет
найдено такое, для которого будут выполнены условия (12). Заметим, что для
простого числа первое условие (12), согласно малой теореме Ферма,
будет
выполняться всегда. Те же числа ,
для которых нарушается второе условие (12),
удовлетворяют сравнению
. Как известно,
уравнение в поле
вычетов имеет не более решений. Одно из них .
Поэтому на промежутке
имеется не более чисел, для которых не выполняются условия (12).
Это означает, что, выбирая случайным образом числа на промежутке ,
при
простом можно с вероятностью большей, чем ,
найти число , для
которого будут выполнены условия теоремы 2, и тем доказать, что
действительно является простым числом.
Заметим, что построенное таким способом простое число будет
удовлетворять неравенству , т.е. будет записываться вдвое большим
количеством цифр, чем исходное простое число . Заменив теперь число
на
найденное простое число и повторив с этим новым все указанные выше
действия, можно построить еще большее простое число. Начав с какого-нибудь
простого числа, скажем, записанного 10 десятичными цифрами (простоту его
можно проверить, например, делением на маленькие табличные простые числа), и
повторив указанную процедуру достаточное число раз, можно построить простые
числа нужной величины.
Обсудим теперь некоторые теоретические вопросы, возникающие в связи с
нахождением
простых чисел вида , где
числа и удовлетворяют неравенствам
.
Прежде всего, согласно теореме Дирихле,
доказанной еще в 1839 г., прогрессия ,
содержит бесконечное
количество простых чисел. Нас интересуют простые числа, лежащие недалеко от
начала прогрессии. Оценка наименьшего простого числа в арифметической
прогрессии была получена в 1944 г. Ю.В.Линником. Соответствующая теорема
утверждает, что наименьшее простое число в арифметической прогрессии
не превосходит , где - некоторая достаточно большая абсолютная
постоянная. В предположении справедливости расширенной гипотезы Римана
можно доказать, [11, с. 272], что наименьшее такое простое число не
превосходит
при любом положительном .
Таким образом, в настоящее время никаких теоретических гарантий для
существования простого числа ,
не существует. Тем не
менее, опыт вычислений на ЭВМ показывает, что простые числа в
арифметической прогрессии встречаются достаточно близко к ее началу.
Упомянем в этой связи гипотезу о существовании бесконечного количества
простых чисел с условием, что число также простое, т.е.
простым является
уже первый член прогрессии.
Очень важен в связи с описываемым методом построения простых чисел
также вопрос о расстоянии между соседними простыми числами в
арифметической прогрессии. Ведь убедившись, что при некотором число
составное, можно следующее значение взять равным и
действовать так далее, пока не будет найдено простое число .
И если расстояние
между соседними простыми числами в прогрессии велико, нет надежды быстро
построить нужное число . Перебор чисел
до того момента, как мы наткнемся
на простое число окажется слишком долгим. В более простом вопросе о
расстоянии между соседними простыми числами и в натуральном ряде
доказано лишь, что
, что, конечно, не очень хорошо для наших
целей. Вместе с тем существует так называемая гипотеза
Крамера (1936 г.), что
, дающая вполне приемлемую оценку. Примерно такой же
результат следует и из расширенной гипотезы Римана. Вычисления на ЭВМ
показывают, что простые числа в арифметических прогрессиях расположены
достаточно плотно.
В качестве итога обсуждения в этом разделе подчеркнем следующее: если
принять на веру, что наименьшее простое число, а также расстояние между
соседними простыми числами в прогрессии при
оцениваются величиной , то
описанная схема построения больших простых чисел имеет полиномиальную
оценку сложности. Кроме того, несмотря на отсутствие теоретических
оценок времени работы алгоритмов, отыскивающих простые числа в
арифметических прогрессиях со сравнительно большой разностью, на
практике эти алгоритмы работают вполне удовлетворительно. На обычном
персональном компьютере без особых затрат времени строятся таким
способом простые числа порядка .
Конечно, способ конструирования
простых чисел для использования в
схеме RSA
должен быть массовым, а сами простые числа должны быть в каком-то смысле
хорошо распределенными. Это вносит ряд дополнительных осложнений в работу
алгоритмов. Впрочем, описанная схема допускает массу вариаций. Все эти
вопросы рассматриваются в статье [12].
Наконец, отметим, что существуют методы построения больших простых
чисел, использующие не только простые делители , но и делители чисел
, , . В основе их лежит использование последовательностей
целых чисел, удовлетворяющих линейным рекуррентным уравнениям различных
порядков. Отметим, что последовательность , члены которой присутствуют в
формулировке малой теоремы Ферма, составляет решение рекуррентного
уравнения первого порядка , .
Next: 4.6. Как проверить большое
Up: 4. Алгоритмические проблемы теории
Previous: 4.4. Как отличить составное
Contents: Содержание