Автор работы: Пользователь скрыл имя, 12 Декабря 2011 в 07:33, реферат
Прежде чем приступать к факторизации целого числа, следует убедиться, что оно действительно составное. Для этого лучше всего использовать один из вероятностных тестов на простоту, например, алгоритм Миллера—Рабина.
Введение………………………………………………………………………………………………………3
Метод Ферма………………………………………………………………………………………………...4
(P− 1)-метод Полларда………………………………………………………………………………...7
p-метод Полларда……………………………………………………………………………………….11
Метод Шермана—Лемана…………………………………………………………………………..14
Алгоритм Ленстры…………………………………………………………………………………….18
Алгоритм Полларда—Штрассена……………………………………………………………….26
(P+ 1)-метод Уильямса и его обобщения……………………………………………………28
Методы Шэнкса………………………………………………………………………………………….30
Заключение………………………………………………………………………………………………...31
Список используемой литературы……………
Доказательство.
Всего имеется 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 на множители.
Информация о работе Факторизация целых чисел с экспоненциальной сложностью