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

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

Описание

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

Содержание

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

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

реферат.docx

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

     Итак, мы достигнем в алгоритме точки (xk, yk) = (u, v), получим значение rk = 0 и найдем a = u −v, что и требовалось доказать.

 

(P− 1)-метод Полларда. 

     Он  основан на следующей идее. Допустим, что у числа n, которое мы хотим разложить на множители, есть простой делитель p такой, что число p − 1 является B-степенно-гладким для некоторой границы гладкости        B > 0. Это означает, что для любого простого числа q, q | p − 1,

выполнено неравенство 

qvq (p−1) ≤B. 

Отсюда  следует, что p − 1 |НОК(1, 2, . . . , B). Если мы выберем a ∈ N такое, что (a, n) = 1, то по малой теореме Ферма 

aНОК(1,2,. . . ,B) ≡1 (mod p). 

Следовательно, НОД(aНОК(1,2,. . . ,B) − 1, n) делится на p и поэтому содержит нетривиальный делитель n (НОД может быть и равен n). 

1 стадия (P −1)-метода Полларда.

     В (P − 1)-методе Полларда мы выбираем априорную границу гладкости B, исходя из возможностей нашего компьютера и времени, которое мы рассчитываем потратить. Обычно B = 105—106. Далее составляем таблицу q1 < q2 < ...< qk ≤ B всех простых чисел, не превосходящих B, и для каждого qi полагаем 

, т.е. qiβ(qi)≤B, qiβ(qi)+1>B 

Далее мы выбираем значение a (например, a= 2). Затем последовательными возведениями в степень и приведениями по модулю n вычисляем 

 

(параметр 20 также априорный). Далее вычисляем НОД(P20, n). Если этот НОД тривиальный, то добавляем к P20 следующее произведение длины 20, т. е. находим 

 

снова считаем НОД(P40, n) и так далее. Предположим, что при некотором k ≥ 1 оказалось, что НОД(P20k, n) > 1. Тогда мы возвращаемся к значению k −1 и начинаем последовательно вычислять наибольшие общие делители 

 

до  первого нетривиального общего делителя.

     Значение  нахождения P20, P40, P60, . . . состоящих из порций по 20 степеней простых чисел, состоит именно в экономии на вычислениях наибольшего общего делителя. Заметим, что поскольку количество простых чисел qi не обязано делится на 20, то последняя порция может быть неполной. 

2 стадия (P − 1)-метода Полларда.

     Предположим, что p | n, p − 1 не является B-степенно-гладким числом, но p −1 =f * r, где f — B-степенно-гладкое число и r — простое число, B < r < B1. Допустим, что на 1 - й стадии (P − 1)-метода Полларда мы вычислили 

b =aНОК(1,2,. . . ,B) (mod n). 

Тогда br ≡1 (mod p), и НОД(br −1 (mod n), n) будет делиться на p по малой теореме Ферма.

     Поэтому на 2 стадии (P − 1)-метода Полларда мы находим все простые числа r1 , . . . , rN, B < r1 < r2 < ...<rN < B1, и составляем разности      di = ri − ri−1, i=2, . . . , N. Эти разности обычно невелики и количество различных таких разностей также невелико (при подходящем выборе B1). Затем мы табулируем элементы bdi (mod n) для всех различных

значений di.

     После этого в алгоритме мы находим 

x1 ≡br1 (mod n), 

после чего вычисляем 

xi ≡bri (mod n) ≡ xi−1 * bdi (mod n), i= 2, . .., N,

и находим 

НОД(xi −1 (mod n), n), i=1, . . . , N. 

Здесь также возможна организация вычислений порциями по 20 для экономии количества нахождений наибольших общих делителей.

     Замечание 1. Оценка сложности (P −1)-метода Полларда в худшем случае составляет O(n1/2 logc n) арифметических операций. Однако в некоторых случаях алгоритм может быстро выдать делитель числа n. Во всех случаях алгоритм хорошо находит небольшие простые делители n, потому что они являются степенно-гладкими для небольшой границы гладкости B.

     Замечание 2. Если какой-либо из вычисляемых в алгоритме наибольших общих делителей оказался равным n, то имеет смысл попробовать другое основание a, например, a= 3.

     На  практике (P − 1)-метод Полларда обычно используют

до  применения более сильных алгоритмов факторизации для того, чтобы

отделить  небольшие простые делители числа n.

 

p-метод Полларда. 

     С его помощью было разложено на множители число Ферма

     F8 = 2256 + 1.

Схема p-метода.

     На  входе задано число n ∈ N, которое мы хотим разложить на множители.

     1 шаг. Выбрать отображение 

f : Z/nZ −→ Z/nZ. 

Обычно f (x) —многочлен степени большей или равной 2, например,             f (x) = x2 +1.

     2 шаг. Случайно выбрать x0 ∈ Z/nZ и вычислять члены рекуррентной последовательности x0, x1, x2, . . . по правилу 

xi ≡ f (xi−1) (mod n). 

     3 шаг. Для некоторых номеров j, k проверять условие 

1<НОД(xj −xk, n) <n 

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

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

     Замечание 3. Выбор номеров j, k на третьем шаге алгоритма обычно делают одним из следующих способов.

     1. Для каждого j перебирают все k, k < j; это долго, и требуется большая память компьютера.

     2. Рассматривают пары k и 2k, т. е. проверяют условие                               1 < НОД(x2k − xk, n) < n.

     3. Если j заключено в пределах 2h ≤ j < 2h+1, где h ∈ N, то полагают        k = 2h − 1.

     Замечание 4. Основная идея p-метода очень проста. Если период последовательности xi(mod n) может быть порядка n, то период последовательности xi(mod p) для простого делителя p числа n не превосходит p. Это значит, что xj и xk могут быть различными по модулю n, но совпадать по модулю p, т.е. p | НОД(xj −xk, n).

     Утверждение 1. Пусть S — фиксированное множество из r элементов, f — какое-либо отображение f : S→S, x0 ∈ S, последовательность x0, x1, x2, . . . определяется соотношением xj = f (xj−1). Пусть λ > 0, l = 1 + [√2λr] < r. Тогда доля тех пар (f, x0) (где f пробегает все отображения из S в S и x0 пробегает все множество S), у которых x0, x1, x2, . . . ,xl попарно различны, среди всех пар (f, x0) не превосходит e−λ.

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