Факторизация целых чисел с экспоненциальной сложностью

Автор работы: Пользователь скрыл имя, 12 Декабря 2011 в 07:33, реферат

Описание

Прежде чем приступать к факторизации целого числа, следует убедиться, что оно действительно составное. Для этого лучше всего использовать один из вероятностных тестов на простоту, например, алгоритм Миллера—Рабина.

Содержание

Введение………………………………………………………………………………………………………3
Метод Ферма………………………………………………………………………………………………...4
(P− 1)-метод Полларда………………………………………………………………………………...7
p-метод Полларда……………………………………………………………………………………….11
Метод Шермана—Лемана…………………………………………………………………………..14
Алгоритм Ленстры…………………………………………………………………………………….18
Алгоритм Полларда—Штрассена……………………………………………………………….26
(P+ 1)-метод Уильямса и его обобщения……………………………………………………28
Методы Шэнкса………………………………………………………………………………………….30
Заключение………………………………………………………………………………………………...31
Список используемой литературы……………

Работа состоит из  1 файл

реферат.docx

— 166.91 Кб (Скачать документ)

     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)-метода заключается в следующем. Рассматривается последовательность чисел Люка, определяемая соотношениями 

Информация о работе Факторизация целых чисел с экспоненциальной сложностью