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: Содержание