Автор работы: Пользователь скрыл имя, 12 Декабря 2011 в 07:33, реферат
Прежде чем приступать к факторизации целого числа, следует убедиться, что оно действительно составное. Для этого лучше всего использовать один из вероятностных тестов на простоту, например, алгоритм Миллера—Рабина.
Введение………………………………………………………………………………………………………3
Метод Ферма………………………………………………………………………………………………...4
(P− 1)-метод Полларда………………………………………………………………………………...7
p-метод Полларда……………………………………………………………………………………….11
Метод Шермана—Лемана…………………………………………………………………………..14
Алгоритм Ленстры…………………………………………………………………………………….18
Алгоритм Полларда—Штрассена……………………………………………………………….26
(P+ 1)-метод Уильямса и его обобщения……………………………………………………28
Методы Шэнкса………………………………………………………………………………………….30
Заключение………………………………………………………………………………………………...31
Список используемой литературы……………
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 имеем
.
Тогда xai
+ ybi ≥
γbi+1ai, откуда в силу неположительности ybi
находим, что x
≥ γbi+1 (заметим,
что ai
0, так
как I
< t). Кроме
того,
откуда 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.
Тогда
rr’ +s(xr’ + yr) ≡n (mod s2),
и
xr’
+ yr ≡ n− rr’/s(mod s).
Отсюда
xr’r* + y≡ (n− rr’)*r*/s (mod s),
т. е.
xa1 +yb1 ≡c1 (mod s).
Сравнение xa0
+ yb0 ≡
c0 (mod s) также
выполняется очевидным образом. Тогда
с помощью рекуррентных формул находим,
что
xai
+ybi ≡ci
(mod s), i= 0, . . ., t.
Применим лемму 3 при γ=1. Найдется i такое, что либо
|xai +ybi|<s, если i четно,
либо
2aibi ≤ xai + ybi ≤ xy+ aibi, если i нечетно.
Фиксируем
это i и положим c
= xai +ybi. Тогда c
≡ ci (mod
s). Из неравенства
мы получим, что
|c|< s, если i четно,
2aibi ≤c n/s2 + aibi, еслиi нечетно.
Значит, c попадает в множество значений, проверяемых на 3 шаге алгоритма. Мы уже заметили ранее, что для четного i таких значений будет не более двух. Для нечетного i число c лежит на отрезке [2aibi, n/s2 + aibi] длины n/s2− aibi < n/s2. Поскольку n/s3 < 1, то только один элемент из арифметической прогрессии ci(mod s) может попасть в этот отрезок. Итак, в алгоритме на 3 шаге мы дойдем до этого значения c = xai + ybi. Решив систему на 4 шаге, мы найдем x и y, и, следовательно, найдем делитель xs + r.
Теперь
оценим сложность алгоритма. Так
как ai получаются с помощью
алгоритма Евклида, то t
= O(log n).
Шаги 2, 3, 4 можно выполнить за O(1) арифметических
операций, поскольку извлечение квадратного
корня из целого числа имеет такую же сложность,
как умножение. В итоге мы доказали теоретическую
оценку сложности O(log
n) арифметических
операций, хотя реально неоднократное
извлечение квадратного корня из дискриминанта
на 4 шаге является трудоемким, как уже
отмечалось.
Алгоритм
Полларда—Штрассена.
Алгоритм основан на следующей теореме.
Теорема 3. Пусть z ∈ N, y = z2. Тогда для любого натурального числа t наименьший простой делитель числа НОД(t, y!) может быть найден за O(z log2 z log2 t) арифметических операций.
Алгоритм .
Положим z = [n1/4] +1, y = z2 > n1/2, t = n. Далее с помощью алгоритма теоремы 3 найдем наименьший простой делитель числа НОД(n, y!). Поскольку y! делится на наименьший простой делитель p числа n (так как p ≤ n1/2 < y), то алгоритм выдаст именно это число p. Сложность алгоритма Полларда—Штрассена O(z log2 z log2 t) = O(n1/4 log4 n).
Доказательство
теоремы 3. Справедливо равенство
Если
мы будем вычислять
НОД(t,
) , j= 1, . . . , z,
то
первый нетривиальный НОД покажет, что минимальный
простой делитель числа НОД(t,
y!) лежит
среди чисел
(j
− 1)z +1, (j −1)z + 2, . .. , jz.
Тогда первое число в этом наборе, которое делит t будет искомым минимальным простым делителем числа НОД(t, y!); для его нахождения потребуется не более чем z операций деления t на числа данного набора.
Обозначим f
(x) =.
Тогда
f
(jz) = .
Набор
чисел 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 в субэкспоненциальных алгоритмах
факторизации целых чисел.
(P+ 1)-метод Уильямса
и его обобщения.
Этот
метод аналогичен (P
− 1)-методу Полларда, но использует
разложение на множители числа P
+ 1. Суть (P + 1)-метода заключается
в следующем. Рассматривается последовательность
чисел Люка, определяемая соотношениями
Информация о работе Факторизация целых чисел с экспоненциальной сложностью