Next: 4.7. Как раскладывают составные
Up: 4. Алгоритмические проблемы теории
Previous: 4.5. Как строить большие
Contents: Содержание
Есть некоторое отличие в
постановках задач предыдущего и настоящего разделов. Когда мы строим простое
число
, мы обладаем некоторой дополнительной информацией о нем,
возникающей в процессе построения. Например, такой информацией является
знание простых делителей числа
. Эта информация иногда облегчает
доказательство простоты
.
В этом разделе мы предполагаем лишь, что нам задано некоторое число
,
например, выбранное случайным образом на каком-то промежутке, и требуется
установить его простоту, или доказать, что оно является составным. Эту задачу за
полиномиальное количество операций решает указанный в разделе 4
алгоритм
Миллера. Однако, справедливость полученного с его помощью утверждения
зависит от недоказанной
расширенной гипотезы Римана. Если число
выдержало испытания
алгоритмом 5 для 100 различных значений параметра
, то, по-видимому, можно утверждать, что оно является простым с
вероятностью большей, чем
. Эта вероятность очень близка к
единице, однако все же оставляет некоторую тень сомнения на простоте
числа
. В дальнейшем в этом разделе мы будем считать, что заданное
число
является простым, а нам требуется лишь доказать это.
В настоящее время известны детерминированные алгоритмы различной
сложности для доказательства простоты чисел. Мы остановимся подробнее на
одном из них, предложенном в 1983 г. в совместной работе Адлемана, Померанца
и Рамели [13]. Для доказательства простоты или непростоты числа
этот
алгоритм требует
арифметических операций. Здесь
- некоторая
положительная абсолютная постоянная. Функция
хоть и медленно, но
все же возрастает с ростом
,
поэтому алгоритм не является полиномиальным. Но
все же его практические реализации позволяют достаточно быстро тестировать
числа на простоту. Существенные усовершенствования и упрощения в
первоначальный вариант алгоритма были внесены в работах Х.Ленстры и
А.Коена [14,15]. Мы будем называть описываемый ниже алгоритм
алгоритмом Адлемана - Ленстры.
В основе алгоритма лежит использование сравнений типа малой теоремы
Ферма, но в кольцах целых чисел круговых полей, т.е. полей, порожденных над
полем
числами
- корнями из
.
Пусть
- простое нечетное число и
-
первообразный корень по модулю
, т.е.
образующий элемент мультипликативной
группы поля
, которая циклична. Для каждого целого числа
,
не делящегося на
, можно определить его индекс,
, называемый также
дискретным логарифмом, с помощью
сравнения
. Рассмотрим
далее два простых числа
с условием, что
делится на
,
но не делится на
.
Следующая функция, определенная на множестве целых чисел,
является характером по модулю

и порядок этого характера равен

.
Сумма
называется суммой Гаусса. Формулируемая ниже теорема 3 представляет собой
аналог малой теоремы Ферма, используемый в алгоритме Адлемана -
Ленстры.
Теорема 5.
Пусть
- нечетное простое число,
. Тогда в кольце
выполняется сравнение
Если при каких-либо числах
сравнение из теоремы 3 нарушается,
можно утверждать, что
составное число. В противном случае,
если сравнение
выполняется, оно
дает некоторую информацию о возможных простых делителях числа
.
Собрав такую информацию для различных
, в конце концов удается
установить, что
имеет лишь один простой делитель и является простым.
В случае
легко проверить, что сравнение из теоремы 3 равносильно
хорошо известному в элементарной теории чисел сравнению
 |
(13) |
где

- так называемый символ
Якоби. Хорошо известно также, что последнее
сравнение выполняется не только для простых

, но и для любых целых

,
взаимно простых с

. Заметим также, что для вычисления символа Якоби
существует быстрый алгоритм, основанный на законе взаимности Гаусса и, в
некотором смысле, подобный алгоритму Евклида вычисления наибольшего
общего делителя. Следующий пример показывает, каким образом выполнимость
нескольких сравнений типа (
13) дает некоторую информацию о возможных
простых делителях числа

.
Пример 1.
(Х. Ленстра).
Пусть
- натуральное число,
, для которого
выполнены сравнения
 |
(14) |
а кроме того с некоторым целым числом

имеем
 |
(15) |
Как уже указывалось, при простом
сравнения (14) выполняются для
любого
, взаимно простого с
, а сравнение (15) означает, что
есть
первообразный корень по модулю
. Количество первообразных корней равно
, т.е. достаточно велико. Таким образом, число
с условием (15) при
простом
может быть найдено достаточно быстро с помощью случайного
выбора и последующей проверки (15).
Докажем, что из выполнимости (14-15) следует, что каждый делитель
числа
удовлетворяет одному из сравнений
 |
(16) |
Не уменьшая общности, можно считать, что

- простое число. Введем теперь
обозначения

,

, где

и

- нечетные числа. Из (15) и
сравнения

следует, что

.
Далее, согласно (
14), выполняются
следующие сравнения
означающие (в силу того, что символ Якоби может равняться лишь

или

),
что
При

это равенство означает, что

при

,
и, следовательно,

. Если же

, то имеем

и

. Этим (
16)
доказано.
Информация такого рода получается и в случае произвольных простых
чисел
и
с указанными выше свойствами.
Опишем (очень грубо) схему алгоритма Адлемана - Ленстры для
проверки простоты
:
1) выбираются различные простые числа
и различные простые
нечетные
такие, что
а) для каждого
все простые делители числа
содержатся
среди
и
не делятся на квадрат простого числа,
б)
;
2) для каждой пары выбранных чисел
,
проводятся тесты, подобные
сравнению из теоремы 3. Если
не удовлетворяет какому-либо из
этих тестов -
оно составное. В противном случае
3) определяется не очень большое множество чисел, с которыми только и
могут быть сравнимы простые делители
. А именно, каждый простой
делитель
числа
должен удовлетворять сравнению вида
4) проверяется, содержит ли найденное множество делители

. Если при
этом делители не обнаружены, утверждается, что

- простое число.
Если число
составное, оно обязательно имеет простой делитель
,
меньший
, который сам содержится среди возможных остатков. Именно
на этом свойстве основано применение пункта 4) алгоритма.
Пример 2.
Если выбрать следующие множества простых чисел
то таким способом удается проверять простоту чисел

.
Отметим, что в работе [13] для тестирования использовались не сравнения
теоремы 3, а закон взаимности для степенных вычетов и так
называемые суммы Якоби. Сумма Якоби
определяется для двух характеров

по модулю

. Если характеры имеют
порядок

, то соответствующая
сумма Якоби принадлежит кольцу
![$ \ZZ[\zeta_p] $](img745.gif)
.
Поскольку числа

, участвующие в алгоритме, сравнительно невелики, то
вычисления с суммами Якоби производятся в полях существенно меньшей
степени, чем вычисления с суммами Гаусса. Это главная причина, по которой
суммы Якоби предпочтительнее для вычислений.
При
выполняется
классическое соотношение
связывающее суммы Гаусса с суммами Якоби и позволяющее переписать
сравнение теоремы 3 в терминах сумм Якоби (см. [16]). Так, при

и

соответствующее сравнение, справедливое для простых

, отличных от 2, 3, 7,
принимает вид
где

и

- некоторый корень кубический из 1.
В 1984 г. в работе [15] было внесено существенное усовершенствование в
алгоритм, позволившее освободиться от требования неделимости чисел
на
квадраты простых чисел. В результате, например, выбрав число
и взяв
равным произведению простых чисел
с
условием, что
делится на
, получим
, что позволяет доказывать
простоту чисел
, записываемых сотней десятичных знаков. При этом
вычисления будут проводиться в полях, порожденных корнями из 1 степеней 16,
9, 5 и 7.
Мой персональный компьютер с процессором Pentium-150, пользуясь
реализацией этого алгоритма на языке UBASIC, доказал простоту записываемого
65 десятичными знаками, большего из простых чисел в примере Ривеста, Шамира
и Адлемана (см. раздел 1) за 8 секунд. Сравнение этих 8 секунд и 17 лет,
потребовавшихся для разложения на множители предложенного в примере числа,
конечно, впечатляет.
Отметим, что оценка сложности этого алгоритма представляет собой
трудную задачу аналитической теории чисел. Как уже указывалось, количество
операций оценивается
величиной
.
Однако соответствующие числа
и
, возникающие в процессе доказательства, не могут быть явно указаны в
зависимости от
. Доказано лишь существование чисел
и
, для которых
достигается оценка. Впрочем, есть вероятностный вариант алгоритма,
доказывающий простоту простого числа
c вероятностью большей
за
арифметических операций. А в предположении расширенной
гипотезы Римана эта оценка сложности может быть получена при
эффективно указанных
и
.
Next: 4.7. Как раскладывают составные
Up: 4. Алгоритмические проблемы теории
Previous: 4.5. Как строить большие
Contents: Содержание