ВУЗ:
Составители:
Глава 4. Метод квадратичного решета 120
4.3. Построение факторной базы
Общая последовательность действий в процедуре подготовки
факторной базы такова:
I. Инициализация:
1. Составляем множество из всех простых чисел, меньших некоторой
верхней границы B : F B = {2, 3, 5, . . . , p
k
}. Верхняя граница при
n ≈ 10
100
выбирается равной 10
6
− 10
7
.
2. Фильтруем факторную базу, оставив в F B только такие элементы p,
для которых n является квадратичным вычетом по модулю p. Иначе
говоря, уравнение
n = k
2
mod p
должно иметь целое решение k . Такие простые p отбираются с
помощью вычисления символа Лежандра. Сложность вычисления
функции Лежандра имеет оценку O (log n log p) (см. [17], с. 29-31), т.е.
полиномиальна по отношению к длине числа n.
3. Следующий шаг заключается в формировании генерирующего
полинома
q(x) = (x + m)
2
− n = x
2
+ 2mx − a, (4.95)
где m = [
√
n] и a = n − m
2
.
4. Потом для каждого p ∈ FB , нам нужно найти корни r
(p)
1
, r
(p)
2
выражения
q(x) = 0(modp) (4.96)
Для небольших p это можно сделать простой подстановкой чисел
0, 1, . . . , (p − 1)/2 в уравнение (4.96), пока решение не будет найдено.
Для больших p алгоритм Шенкса–Тонелли (D. Shanks, Tonelli),
описанный в разд. 1.14, позволяет найти корни за время O(log
2
p). Если
Глава 4. Метод квадратичного решета 120
4.3. Построение факторной базы
Общая последовательность действий в процедуре подготовки
факторной базы такова:
I. Инициализация:
1. Составляем множество из всех простых чисел, меньших некоторой
верхней границы B : F B = {2, 3, 5, . . . , pk }. Верхняя граница при
n ≈ 10100 выбирается равной 106 − 107 .
2. Фильтруем факторную базу, оставив в F B только такие элементы p,
для которых n является квадратичным вычетом по модулю p. Иначе
говоря, уравнение
n = k 2 mod p
должно иметь целое решение k . Такие простые p отбираются с
помощью вычисления символа Лежандра. Сложность вычисления
функции Лежандра имеет оценку O (log n log p) (см. [17], с. 29-31), т.е.
полиномиальна по отношению к длине числа n.
3. Следующий шаг заключается в формировании генерирующего
полинома
q(x) = (x + m)2 − n = x2 + 2mx − a, (4.95)
√
где m = [ n] и a = n − m2 .
(p) (p)
4. Потом для каждого p ∈ F B , нам нужно найти корни r1 , r2
выражения
q(x) = 0(modp) (4.96)
Для небольших p это можно сделать простой подстановкой чисел
0, 1, . . . , (p − 1)/2 в уравнение (4.96), пока решение не будет найдено.
Для больших p алгоритм Шенкса–Тонелли (D. Shanks, Tonelli),
описанный в разд. 1.14, позволяет найти корни за время O(log2 p). Если
Страницы
- « первая
- ‹ предыдущая
- …
- 117
- 118
- 119
- 120
- 121
- …
- следующая ›
- последняя »
