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

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

Описание

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

Содержание

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

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

реферат.docx

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

     Доказательство. Всего имеется rr * r = rr+1 различных пар (f, x0). Пар (f, x0), у которых x0, x1, x2, . . . ,xl попарно различны будет 

r(r − 1) . . . (r− l) * rr−l. 

Доля  таких пар составляет величину 

 

Поскольку при 0 < x < 1 выполнено неравенство log(1 − x) < −x, то 

что и требовалось доказать.

     Для чего нужно доказанное утверждение? Если у n есть небольшой простой делитель p, то величина l = l(n) = 1+ [√2λn] имеет порядок n1/2, в то время как величина l = l(p) = 1 + [√2λp] существенно меньше. А доля наборов (f, x0 (mod n)), где f : Z/nZ −→ Z/nZ, у которых элементы длинного набора x0(mod n), . . . , xl(n)(mod n) различны, не превосходит той же величины e−λ, что и доля наборов (f, x0 (mod p)), где f : Z/pZ −→ Z/pZ, у которых различны элементы короткого набора x0 (mod p), . .. , xl(p) (mod p).

     Теорема 1. Пусть n — нечетное составное число, p — простой делитель n, p < √n, f (x) ∈ Z[x] , x0 ∈ Z, причем f хорошо редуцируется к модулю n, т. е. f корректно определяет отображение 

f : Z/nZ −→ Z/nZ. 

Предположим также, что f (x) хорошо редуцируется к модулю p. Если пара (f, x0(mod p)) является не слишком редкой по своим статистическим свойствам, то p-метод Полларда найдет p за O(n1/4 log3 n) битовых операций.

     Точнее, существует константа c, такая, что для любого λ>0 вероятность не найти нетривиальный делитель n за c·√λn1/4 * log3n битовых операций будет меньше, чем e−λ.

 

Метод Шермана—Лемана. 

Алгоритм.

     Пусть n нечетно, n > 8.

     1 шаг. Для a = 2, 3, . . ., [n1/3] проверить условие a | n. Если на этом шаге мы не разложили n на множители, то переходим к шагу 2.

     2 шаг. Если на 1 шаге делитель не найден и n —составное, то n = pq, где p, q — простые числа, и 

n1/3 < p ≤ q < n2/3. 

Тогда для всех k = 1, 2, . . ., [n1/3] и всех d = 0, 1, . . ., [n1/6/(4√k)] +1 проверить, является ли число 

([√4kn] + d)2 − 4kn 

квадратом натурального числа. Если является, то для A = [√4kn] + d и         B = √(A2 − 4kn) выполнено сравнение 

A2 ≡ B2 (mod n). 

В этом случае проверить условие 

1 < (A B, n) < n. 

Если  это условие выполнено, то мы разложили  n на два множителя и алгоритм останавливается.

     Конец алгоритма.

     Если  алгоритм не нашел разложение n на два множителя, то n — простое число. Докажем это. Нам нужно рассмотреть лишь случай n = pq, где p, q—простые числа, 

n1/3 < p ≤  q < n2/3. 

     Лемма 1. При этих условиях существуют натуральные числа r, s такие, что 

rs < n1/3, |pr −qs| < n1/3. 

     Воспользуемся этой леммой и положим в алгоритме k = rs≤ [n1/3] .

Тогда 

4kn = 4rspq = (pr + qs)2 − (pr − qs)2. 

Следовательно, 

(pr + qs)2 − 4kn = (pr− qs)2 =B2,

где B = |pr −qs| < n1/3. Пусть 

d = pr + qs − [√4kn] . 

Тогда 

n2/3 > (pr+ qs)2 − 4kn = (pr +qs+√4kn) (pr+ qs−√4kn) ≥ 2√4kn(d −1). 

Отсюда  получаем

d < n2/3/(4√kn)+ 1= n1/6/(4√k)+ 1.

Значит, k и d лежат в установленных в алгоритме пределах. Поэтому в алгоритме мы найдем число A = pr + qs = [√4kn] + d такое, что                           B = √(A2 − 4kn) = |pr − qs| является натуральным числом. При этом             A2 − B2 = 4kn ≡ 0(mod n). Далее, одно из двух чисел A B равно 2pr  и имеет с n общий делитель, равный p, так как n нечетно и не делится на все числа, не превосходящие n1/3, а r< n1/3. То есть мы с помощью НОД(A ±B, n) разложим n на множители.

     Доказательство. Если p = q, т.е. n = p2, то утверждение леммы выполнено для r = s = 1. Далее будем считать p < q.

     Разложим q/p в непрерывную дробь. Мы обозначаем pj/qj j-ю подходящую дробь к q/p. Тогда 

p0 = [q/p] , q0 = 1, 0 <p0q0 < n1/3, 

поскольку q/p<n2/3/n1/3 = n1/3. Выберем первый номер m такой, что        pmqm < n1/3, pm+1qm+1 > n1/3.

     Такой номер обязательно найдется, поскольку у последней подходящей дроби знаменатель . Докажем, что и удовлетворяют утверждению леммы. Очевидно, что . Далее, 
 
 

по  свойствам подходящих дробей.

     Рассмотрим  сначала случай . В этом случае 

что и требовалось доказать.

     Теперь  рассмотрим случай . Тогда перевернем неравенства , откуда . Следовательно, по свойствам непрерывных дробей, выполнены неравенства 

     . 

     Отсюда 
 

Лемма доказана.

     Замечание 5. При реализации алгоритма Шермана—Лемана возможно эффективное использование параллельных вычислений. 

 

Алгоритм  Ленстры. 

     Теорема 2. Пусть r, s, n—натуральные числа, удовлетворяющие условиям 

1≤ r< s< n, n1/3 <s, (r, s) = 1. 

Тогда существует не более 11 делителей ri числа n таких, что ri ≡ r (mod s). Имеется алгоритм, который находит все эти ri за O(log n) арифметических операций.

     Следствие 1. Используя алгоритм из теоремы 2, можно получить метод факторизации числа n за O(n1/3 log2n) арифметических операций. Положим s = [n1/3] +1. С помощью алгоритма Евклида представим n в виде n = n1n2, где (n1,s) = 1, а число n2 равно произведению степеней тех простых чисел, которые делят s. Мы факторизуем n1, а для факторизации n2 поступим аналогично, заменив s на s+ 1. Теперь перебираем                         r = 1, 2, . . . , s 1 и для тех r, которые взаимно просты с s, находим с помощью алгоритма теоремы делители ri числа n1, ri ≡ r (mod s). В силу взаимной простоты n1 и s мы полностью разложим n1 на множители.

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