- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
§ 2.5. Алгоритм Ленстры |
67 |
|
Рассмотрим сначала случай |
pm+1 |
|
|
|
q |
|
|
. В этом случае |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
q |
p |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
q |
|
|
|
|
|
ps |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
= |
p |
|
|
p |
|
|
|
|
|
|
1/2 |
|
|
|
|
|||||||||||||||||||
|pr − qs| = ps |
|
|
− |
|
|
|
|
|
|
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
· |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
s |
p |
sqm+1 |
|
qm+1 |
qm+1 |
qm+1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
· |
|
|
|
|
|
|
= |
|
|
|
|
|
< n1/6 |
= n |
, |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
qm+1 |
|
pm+1 |
pm+1qm+1 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
|
|
q |
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
n |
|
|
|
1/3 |
|
|
||||||||
что и требовалось доказать. |
|
|
pm+1 |
|
|
|
|
|
q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
Теперь рассмотрим случай |
> |
|
. Тогда перевернем неравенства |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
q |
m+1 |
|
p |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
pm+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
q |
|
pm |
|
|
|
|
|
|
|
|
|
qm |
|
|
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
> |
> |
, откуда |
|
> |
> |
qm+1 |
. Следовательно, по свойствам |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
q |
|
|
|
|
|
p |
q |
p |
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
p q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
m+1 |
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
непрерывных дробей, выполнены неравенства |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
rq |
r |
− q |
|
r |
|
− pm+1 |
= rpm+1 . |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
1 |
|
|
s |
|
|
|
p |
|
|
|
|
|
|
|
|
s |
|
|
|
|
|
|
qm+1 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
Отсюда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
|
p |
|
|
|
rq |
|
|
|
|
|
|
|
|
|
|
|
|
q |
|
|
= |
|
q |
|
|
|
|
q |
|
|
|
|
|
|
|
1/2 |
|
|
|
||||||||||||||||
1 |sq − pr| = rq |
|
|
|
|
|
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
− |
|
|
|
|
|
|
|
|
|
· |
|
|
|
< |
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
r |
q |
|
|
rpm+1 |
pm+1 |
pm+1 |
pm+1 |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
< |
|
|
|
· |
|
= |
|
|
< n1/6 |
= n |
|
. |
||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pm+1 |
|
qm+1 |
pm+1qm+1 |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q |
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
n |
|
|
|
|
|
n |
|
|
1/3 |
|
Лемма доказана. Замечание 2.11. При реализации алгоритма Шермана—Лемана
возможно эффективное использование параллельных вычислений.
§ 2.5. Алгоритм Ленстры
В работе [165] получен следующий результат.
Теорема 2.12. Пусть r, s, n — натуральные числа, удовлетворяющие условиям
1 r < s < n, n1/3 < s, (r, s) = 1.
Тогда существует не более 11 делителей ri числа n таких, что ri ≡ r (mod s). Имеется алгоритм, который находит все эти ri за O(log n) арифметических операций.
Следствие 2.13. Используя алгоритм из теоремы 2.12, можно получить метод факторизации числа n за O(n1/3 log2 n) арифметических операций. Положим s= [n1/3] + 1. С помощью алгоритма Евклида представим n в виде n=n1n2, где (n1,s) =1, а число n2 равно произведению степеней тех простых чисел, которые делят s.
5*
68 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Мы факторизуем n1, а для факторизации n2 поступим аналогично, заменив s на s + 1. Теперь перебираем r = 1, 2, . . . , s − 1 и для тех r, которые взаимно просты с s, находим с помощью алгоритма теоремы делители ri числа n1, ri ≡ r (mod s). В силу взаимной простоты n1 и s мы полностью разложим n1 на множители.
Следствие 2.14. В § 1.8 главы 1 приведено описание схемы алгоритма Ленстры для проверки простоты натуральных чисел. Оценка сложности этого алгоритма зависит от начальных про-
стых чисел p1, . . . , pl, таких, что |
|
s = |
q > n1/2. |
q —1 |
|
простое |
|
q− |p1...pl |
Теорема 2.12 позволяет уменьшить количество простых чисел p1, . . . , pl и ослабить это неравенство до s > n1/3. Затем на последней стадии алгоритма проверки простоты нам придется восстанавливать возможные делители числа n по остаткам rj (mod s).
Это усовершенствование на практике позволяет ускорить работу алгоритма проверки простоты чисел.
Мы докажем здесь теорему 2.12 лишь частично. А именно, мы полностью опишем алгоритм нахождения всех ri ≡ r (mod s) и докажем оценку сложности. Доказательство того, что таких делителей может быть не более 11, является комбинаторным и его можно найти в [165].
Замечание 2.15. Можно доказать, что для любой постоянной ,
13 > > 14 , существует постоянная c( ) > 0 такая, что при 1 r < s < n, (r, s) = 1, s > n , существует не более c( ) положительных делителей числа n, сравнимых с r по модулю s. Однако полиномиальный алгоритм для их нахождения пока неизвестен.
Алгоритм.
На входе заданы числа r, s, n N, удовлетворяющие условиям теоремы.
1 шаг. С помощью обобщенного алгоритма Евклида найти r N,
r r ≡ 1 (mod s). Найти r такое, что r ≡ r n (mod s), 0 r < s. |
|
|||||||||||
2 шаг. Для очередного значения i = 0, 1, 2, . . . |
найти числа ai, bi, ci |
|||||||||||
по следующим правилам: |
|
|
|
|
|
|
|
|
||||
|
|
|
a0 = s, |
b0 = 0, |
c0 = 0, |
|
|
|
||||
|
(mod |
), |
0 |
< a1 |
s |
, |
b1 = |
1, |
c1 ≡ |
n − rr |
(mod |
) |
a1 ≡ r r |
|
s |
|
|
|
s |
· r |
s |
§ 2.5. Алгоритм Ленстры |
69 |
|
и при i 2 |
|
|
ai = ai−2 − qiai−1, bi = bi−2 − qibi−1, ci ≡ ci−2 − qici−1 |
(mod s). |
|
Здесь целые числа qi однозначно определяются условиями |
|
|
0 ai < ai−1 |
при i четном, |
|
0 < ai ai−1 |
при i нечетном. |
|
Фактически, qi — частное от деления ai−2 на ai−1, за исключением случая, когда i нечетно и остаток от деления равен нулю. Отметим, что ai монотонно не возрастают и на четных номерах — убывают.
3 шаг. Для очередного набора ai, bi, ci найти все целые числа c, удовлетворяющие условиям
c = ci |
(mod s), |
|
||
|c| < s, |
если i четное, |
|||
2aibi |
c |
n |
+ aibi, |
если i нечетное. |
2 |
||||
|
|
s |
|
Таких c будет не более двух; для четного i это очевидно, а для нечетных i мы докажем это ниже.
4 шаг. Для каждого c из шага 3 решить в целых числах систему
уравнений |
(xsi |
+ r) (iys + r ) = n. |
|
||
|
xa |
+ yb = c, |
Если x и y окажутся неотрицательными целыми числами, то добавить xs + r к списку искомых делителей.
5 шаг. Если ai = 0, то алгоритм заканчивает работу. Иначе возвращаемся на шаг 2 к следующему значению i.
Конец алгоритма.
Замечание 2.16. Систему линейных уравнений, возникающую на 4 шаге алгоритма, можно свести к одному квадратному уравне-
нию. Положим
u = ai (xs + r), v = bi (ys + r ).
Тогда
uv = naibi, u + v = s(aix + biy) + air + bir = cs + air + bir , т. е. числа u и v являются корнями многочлена
T2 − (cs + air + bir )T + aibin.
70 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Эти корни должны быть целыми числами, одно из которых делится на ai, а другое — на bi. Поскольку мы работаем с большими целыми числами, на практике многократное извлечение корня из дискриминанта для нахождения корней многочлена является достаточно трудоемким.
Замечание 2.17. Обозначим через t номер, для которого at = 0. Поскольку ai получается с помощью алгоритма Евклида, примененного к a0 = s и a1, a1 s, то очевидно, что t = O(log s). Кроме того, по определению чисел ai номер t четен.
Лемма 2.18. Числа ai, bi обладают следующими свойствами:
1.ai > 0, bi > 0 для нечетных i, 0 < i < t;
2.ai 0, bi 0, (ai, bi) = (0, 0) для четных i, 0 i t;
3.bi+1ai − ai+1bi = (−1)i · s для 0 i < t.
Доказательство. Свойство 1 для i = 1, свойства 2 и 3 для i = 0 выполняются по определению a0, b0, a1 и b1. Дальнейшее доказательство проведем по индукции.
Свойство 3 следует из соотношения
bi+2ai+1 − ai+2bi+1 =
= (bi − qi+2bi+1)ai+1 − (ai − qi+2ai+1)bi+1 = −(bi+1ai − ai+1bi).
Неравенства ai > 0 для нечетных i и ai 0 для четных i следуют из определения ai, а неравенство (ai, bi) = (0, 0) следует из свойства 3. Докажем неравенства для bi.
Если i нечетно, то i < t. Тогда
bi = bi−2 − qibi−1 > 0,
поскольку bi−2 > 0 и bi−1 0 по предположению индукции и числа qi неотрицательны по определению. Точнее, в этом случае справедливо более сильное неравенство: bi bi−2.
Пусть i четно, i t. Тогда по предположению индукции bi−2 0, bi−1 > 0, и здесь qi — настоящее частное, т. е. qi 1. Тогда bi = bi−2 −
− qibi−1 < 0, и даже bi < bi−2. Лемма |
|
|
|
||||
Лемма |
2.19. Пусть ai, |
bi, |
t — числа из |
алгоритма. |
Пусть |
||
x, y R 0, |
R>0. Тогда |
найдется |
номер |
i, 0 i t, |
такой, |
||
что либо |
|
|
|
|
|
|
|
− s < xai + ybi < s, |
если i четно, |
|
|
||||
либо |
|
|
|
|
|
|
|
2 aibi xai + ybi |
xy |
+ aibi, |
если i нечетно. |
|
|||
|
|
||||||
|
|
|
|
|
|
|
§ 2.5. Алгоритм Ленстры |
71 |
Доказательство. Если x = y = 0, то утверждение леммы очевидно. Пусть далее x или y отлично от нуля. Поскольку по лемме 2.18
xa0 + yb0 = xs 0, xat + ybt = ybt 0,
то найдется четный номер i такой, что
xai + ybi 0, xai+2 + ybi+2 0.
Если xai + ybi < s или xai+2 + ybi+2 > − s, то все доказано. Если же xai + ybi s и xai+2 + ybi+2 − s, то по лемме 2.18 имеем
xai + ybi s = bi+1ai − ai+1bi bi+1ai.
Тогда xai + ybi bi+1ai, откуда в силу неположительности ybi находим, что x bi+1 (заметим, что ai = 0, так как i < t). Кроме того,
xai+2 + ybi+2 −s = bi+2ai+1 − ai+2bi+1 bi+2ai+1,
откуда xai+2 + ybi+2 bi+2ai+1, и в силу неотрицательности xai+2 получаем ybi+2 bi+2ai+1. Заметим, что bi+2 < 0, так как xai+2 + ybi+2− s < 0. Тогда y ai+1.
Из доказанных оценок снизу для x и y получаем xai+1 + ybi+1 2 ai+1bi+1,
т. е. выполнено нижнее неравенство утверждения леммы для нечетного номера i + 1. Также
(x − bi+1) (y − ai+1) 0.
Поэтому
xy − ai+1x − bi+1y + 2bi+1ai+1 0.
Следовательно
(ai+1x + bi+1y) xy + 2bi+1ai+1,
отсюда следует и верхнее неравенство для номера i + 1.
Теперь докажем, что алгоритм находит все делители числа n, сравнимые с r по модулю s. Пусть xs + r — такой делитель (число x Z 0
нам неизвестно). Тогда при |
некотором |
d N выполнено |
равенство |
(xs + r)d = n, откуда dr ≡ n |
(mod s) и |
d ≡ nr ≡ r (mod |
s). Значит, |
d = r + ys, где y Z 0, поскольку r < s. Отсюда |
|
(xs + r) (ys + r ) = n.
72 |
Гл. 2. Факторизация целых чисел с экспоненциальной сложностью |
||||||||
Тогда |
rr + s(xr + yr) |
|
n (mod s2), |
||||||
|
≡ |
||||||||
и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n − rr |
|
|||
|
xr |
+ |
yr ≡ |
|
(mod ). |
||||
|
|
|
s |
|
s |
||||
Отсюда |
|
|
|
|
n − rr |
|
|
||
|
xr r + y |
≡ |
r (mod s), |
||||||
т. е. |
|
|
|
|
s |
|
|
|
|
xa1 + yb1 ≡ c1 |
|
|
|||||||
|
(mod s). |
Сравнение xa0 + yb0 ≡ c0 (mod s) также выполняется очевидным образом. Тогда с помощью рекуррентных формул находим, что
xai + ybi ≡ ci (mod s), i = 0, . . . , t. Применим лемму 2.19 при = 1. Найдется i такое, что либо
|xai + ybi| < s, если i четно,
либо
2aibi xai + ybi xy + aibi, если i нечетно.
Фиксируем это i и положим c = xai + ybi. Тогда c ≡ ci (mod s). Из неравенства
xy |
|
(xs + r) (ys + r ) |
= |
n |
||||
|
|
s2 |
|
s2 |
|
|||
мы получим, что |
|
|
|
|
|
|
|
|
|c| < s, |
n |
|
если i четно, |
|||||
2aibi c |
+ aibi, |
если i нечетно. |
||||||
2 |
||||||||
|
s |
|
|
|
|
Значит, c попадает в множество значений, проверяемых на 3 шаге алгоритма. Мы уже заметили ранее, что для четного i таких значе-
ний будет не более двух. Для нечетного i число c лежит на отрезке |
|||||||||
|
|
|
n |
|
n |
ci |
s |
||
|
2aibi, |
n |
+ aibi |
длины |
− aibi < |
. Поскольку n/s3 < 1, то только |
|||
|
s2 |
s2 |
s2 |
||||||
один элемент из арифметической прогрессии |
(mod ) может попасть |
в этот отрезок. Итак, в алгоритме на 3 шаге мы дойдем до этого значения c = xai + ybi. Решив систему на 4 шаге, мы найдем x и y, и, следовательно, найдем делитель xs + r.
Теперь оценим сложность алгоритма. Так как ai получаются с помощью алгоритма Евклида, то t = O(log n). Шаги 2, 3, 4 можно выполнить
§ 2.6. Алгоритм Полларда—Штрассена |
73 |
за O(1) арифметических операций, поскольку согласно [53] извлечение квадратного корня из целого числа имеет такую же сложность, как умножение. В итоге мы доказали теоретическую оценку сложности O(log n) арифметических операций, хотя реально неоднократное извлечение квадратного корня из дискриминанта на 4 шаге является трудоемким, как уже отмечалось выше.
§ 2.6. Алгоритм Полларда—Штрассена
Алгоритм Полларда—Штрассена впервые описан в работе [218], (см. также [264]). Он детерминированно находит разложение n на два множителя за O(n1/4 log4 n) арифметических операций, т. е. имеет наилучшую оценку сложности среди детерминированных алгоритмов факторизации. Алгоритм основан на следующей теореме.
Теорема 2.20. Пусть z N, y = z2. Тогда для любого натурального числа t наименьший простой делитель числа НОД(t, y!) может быть найден за O(z log2 z log2 t) арифметических операций.
Алгоритм Полларда—Штрассена
Положим z = [n1/4] + 1, y = z2 > n1/2, t = n. Далее с помощью алгоритма теоремы 2.20 найдем наименьший простой делитель числа НОД(n, y!). Поскольку y! делится на наименьший простой делитель p числа n (так как p n1/2 < y), то алгоритм выдаст именно это чис-
ло p. Сложность алгоритма Полларда—Штрассена O(z log2 z log2 t) = = O(n1/4 log4 n).
Доказательство теоремы 2.20. Справедливо равенство
|
|
z |
|
(jz)! |
||
|
y! = |
|
||||
|
|
|
|
. |
||
|
((j |
1)z)! |
||||
|
=1 |
|
− |
|
|
|
Если мы будем вычислять |
|
j |
|
|
|
|
|
|
|
, |
|
|
|
НОД t, |
|
(jz)! |
|
j = 1, . . . , z, |
||
|
|
|||||
|
((j − 1)z)! |
то первый нетривиальный НОД покажет, что минимальный простой делитель числа НОД(t, y!) лежит среди чисел
(j − 1)z + 1, (j − 1)z + 2, . . . , jz.
Тогда первое число в этом наборе, которое делит t будет искомым минимальным простым делителем числа НОД(t, y!); для его нахождения потребуется не более чем z операций деления t на числа данного набора.