- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
74 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Обозначим f(x) = z−1(x − i). Тогда
i=0
f(jz) = ((j − 1)z)! .
Ниже в главе 9, посвященной дискретному преобразованию Фурье, будет показано, что набор чисел
f(jz) (mod t), j = 1, . . . , z,
можно найти за O(z log2 z log2 t) арифметических операций. Кроме того, для нахождения первого нетривиального
НОД(t, f(jz) (mod t)), j = 1, . . . , z,
надо затратить zO(log t) = O(z log t) арифметических операций. Итоговая оценка сложности составляет
O(z log2 z log2 t) + O(z log t) + z = O(z log2 z log2 t),
что и завершает доказательство теоремы. Алгоритм Полларда—Штрассена может использоваться как непо-
средственно для факторизации не очень больших целых чисел, так и в качестве вспомогательного алгоритма в дополнительной стратегии PS в субэкспоненциальных алгоритмах факторизации целых чисел. Об этом будет рассказано в следующей главе.
§ 2.7. (P + 1)-метод Уильямса и его обобщения
В работе [283] описан метод факторизации чисел n N с помощью последовательностей чисел Люка. Этот метод аналогичен (P − 1)-ме- тоду Полларда, но использует разложение на множители числа P + 1. В работе [59] метод был обобщен на основе использования произвольных круговых многочленов. Суть (P + 1)-метода заключается в следующем.
Рассматривается последовательность чисел Люка, определяемая соотношениями
u0 = 0, u1 = u, un+1 = Pun − Qun−1,
где P, Q — фиксированные целые числа. Пусть p — простой делитель факторизуемого натурального числа n такой, что p + 1 является B-сте- пенно-гладким, т. е.
|
k |
p = |
i |
qi i − 1, |
|
|
=1 |
§ 2.8. Методы Шэнкса |
75 |
где qi — простые числа, qi i B. Пусть числа i N таковы, что
qi i B, qi i+1 > B, i = 1, . . . , k.
k
Положим R = qi i . Тогда p + 1 | R. Если для последовательности чи-
i=1
сел Люка параметр Q взаимно прост с n и выполнено условие
P2 − 4Q =
p
−1
(оба эти условия эвристически обеспечиваются некоторым случайным перебором P и Q), то по свойствам последовательностей чисел Люка
p | НОД(uR, n).
Дальнейшая работа алгоритма заключается в достаточно быстром вычислении элемента последовательности uR и нахождении НОД(uR, n).
В работе [283] указано, что данный метод является довольно-та- ки медленным на практике. В работе [59] доказано, что для обобщения (P + 1)-метода Уильямса с применением круговых многочленов в предположении расширенной гипотезы Римана может быть доказана вероятностная полиномиальная оценка сложности.
§ 2.8. Методы Шэнкса
Два метода факторизации целых чисел, использующих бинарные квадратичные формы, принадлежат Д. Шэнксу, см. [233; 248; 284]. Первый из них работает с положительно определенными бинарными квадратичными формами заданного отрицательного дискриминанта, и в группе классов форм он находит амбигову форму, которая дает разложение дискриминанта на множители. Сложность этого метода составляет O(n1/5+ ) арифметических операций при условии выполнения расширенной гипотезы Римана. Второй метод носит название SQUFOF и использует группу классов бинарных квадратичных форм с положительным дискриминантом. Здесь также происходит нахождение амбиговой формы, дающей разложение дискриминанта. Сложность SQUFOF составляет O(n1/4+ ) арифметических операций;√при этом алгоритм работает с целыми числами, не превосходящими 2 n. Среди алгоритмов факторизации с экспоненциальной сложностью SQUFOF считается одним из самых эффективных.
76 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Детальное описание алгоритмов Шэнкса выходит за рамки данной книги, поскольку требует привлечения ряда фактов из теории бинарных квадратичных форм. Для справок см. [84; 89, гл. 8].
§ 2.9. Прочие методы. Заключение
Для чисел n специального вида возможны особые подходы к факторизации, поскольку делители таких чисел могут также иметь специальный вид.
Теорема 2.21. Пусть b, k N, b > 1, n = bk − 1. Если p — простое число, делящее n, то выполнено одно из двух утверждений:
1.p | bd − 1 при некотором d < k, d | k;
2.p ≡ 1 (mod k).
При этом, если p > 2 и |
k — нечетно, |
то во втором случае |
||
p ≡ 1 (mod 2k). |
малой теореме |
Ферма bp−1 |
d≡ |
1 (mod p), |
k |
||||
Доказательство. По |
|
|||
а также b ≡ 1 (mod p). Пусть d = НОД(k, p − 1), тогда b ≡ 1 (mod p). Если d < k, то это означает выполнение первого утверждения теоремы. Если же d = k, то k | p − 1, т. е. p ≡ 1 (mod k).
Пример 2.22. Пусть n = 211 − 1. Тогда первое утверждение теоремы не выполняется, так как 11 — простое число и d = 1 не подходит (21 − 1 = 1). Следовательно, p ≡ 1 (mod 22). После этого сразу находим n = 23 · 89.
Обзор методов факторизации с экспоненциальной сложностью можно найти в работе [273]. Более поздние работы см. в списках литературы книг [60; 89]. Заметим, что в печати достаточно часто появляются новые работы, содержащие алгоритмы факторизации с экспоненциальной сложностью. Однако практическая значимость таких алгоритмов, как правило, невелика. Наиболее популярными
впрактических вычислениях являются (P − 1)-метод Полларда, -ме- тод Полларда и алгоритм Полларда—Штрассена. Они используются
всочетании с субэкспоненциальными методами факторизации, которые будут описаны в главе 3, и применяются, как правило, для предварительного отделения небольших простых делителей у факторизуемого числа.
