Мегаобучалка Главная | О нас | Обратная связь


Метод квадратичного решета



2015-12-04 888 Обсуждений (0)
Метод квадратичного решета 0.00 из 5.00 0 оценок




Пусть n – число, которое надо факторизовать. Как и метод Ферма, данный метод ищет целые числа x, y: n=x2—y2, но подход к поиску несколько иной. Поиск числа x осуществляется не среди всех чисел подходящего размера. Перед началом перебора производится отсев некоторых чисел.

Принцип отсева вытекает из следующих рассуждений: Возьмем небольшое число m и рассмотрим полную систему вычетов Zm={0, 1, 2, … ,m—1}. Среди чисел из Zm некоторые числа являются квадратами (то есть квадратичными вычетами), а другие не являются. Если m – простое число, то квадратов столько же, сколько неквадратов. Если m – составное, то квадратов несколько меньше. В общем случае,

P(s Q(m)) ≤ .

Если число не является квадратичным вычетом по какому-то модулю m, то оно не является квадратом в Z, поэтому число y2 следует искать среди тех чисел, которые являются квадратами в Zm.

В методе квадратичного решета берут несколько небольших попарно простых модулей m1, m2, … , mk. Для каждого такого модуля составляют квадратичное решето (двоичный вектор Sm) следующим образом:

Для каждого x Zm вычисляют x2 mod m и z=(x2—n) mod m. Если z является квадратом по модулю m, то Sm(x)=1, иначе Sm(x)=0. Проверка того, является ли z квадратом по модулю m, производится путем сверки с вычисленными x2 mod m.

X m–1
x2mod m 22 mod m (m–1)2mod m
z=x2n mod m z2 zm—1

 

После того, как все решёта построены, начинается отсев кандидатов x. Решёта накладываются на последовательность чисел x от +1 до . Те числа, на которые наложился «0» хотя бы одного решета, отсеиваются. После отсева остается достаточно небольшое количество чисел – кандидатов в x. Для каждого такого числа вычисляется x2, z= x2n и y= . Если y2=z, то числа a=x+y, b=x—y являются делителями числа n.

Пример:

n=279.

Построим решёта по модулям 4, 5 и 7:

x
x2mod 4
Z=x2–279 mod 4
S4
x
x2mod 5
z=x2–279 mod 5
S5

 

x
x2mod 7
z=x2–279 mod 7
S7

 

Теперь, когда мы построили три решета, наложим их на последовательность чисел от +1=17 до =140.

Поскольку 17 mod 4 = 1, то наложение решета S4 начнем с S4(1),

17 mod 5 = 2, то наложение решета S5 начнем с S5(2),

17 mod 7 = 3, то наложение решета S7 начнем с S7(3).

x
S4
S5
S7

 

Среди чисел от 17 до 34 остались 20, 22, 28,

Проверим их:

x=20, x2=400, z=x2—n=121, y= =11, y2=121=z.

Тогда a=x+y=31, b=x—y=9.

Ответ: 279=31·9.

 

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

Ро-метод Полларда – метод специального назначения для поиска малых делителей.

Пусть n – число, которое требуется факторизовать, и f(x) – случайный полином над Zn. Возьмем x0 – случайное число из Zn и построим последовательность x1, x2,…., xk, … по правилу xi+1=f(xi), i=0, 1, …. Поскольку Zn – конечное множество, то рано или поздно в последовательности возникнет xs+i=xi, s<n. То есть последовательность x1, x2,… войдет в цикл периодом s.

Замечание: среднее ожидаемое величины периода последовательности, построенной выше, есть E(s)= .

Пусть p – простой делитель числа n, и в последовательности, построенной выше, нашлись числа xi, xj: xi≡xj (mod p), xi xj (mod n).

Тогда p\НОД(xi—xj,n), n не делит НОД(xi—xj,n), а значит НОД(xi—xj,n) является нетривиальным делителем n.

Ро-метод Флойда использует функцию f(x)=x2+1 mod n, а для поиска чисел xi, xj применяет метод Флойда поиска периода последовательности.

 

Метод Флойда поиска периода последовательности:

Вычисляем x2=f(x1). По паре (x1, x2) вычисляем пару (x2=f(x1), x4=f(f(x2))) и т. д., по паре (xi, x2i) вычисляем пару (xi+1=f(xi), x2(i+1)=f(f(x2i))). Как только получаем пару одинаковых значений xm=x2m, заключаем, что m\s, где s – период последовательности. Кроме того, если l – длина предпериода последовательности (то есть количество первых членов последовательности, пока та не вошла в цикл), то m=s .

Этот метод позволяет сэкономить память для последовательностей большого периода. Действительно, одновременно следует хранить лишь два члена последовательности. Если бы поиск периода велся традиционным способом (последовательного вычисления всех членов последовательности до первого повторения), то потребовалось бы место для хранения l+s членов.

 



2015-12-04 888 Обсуждений (0)
Метод квадратичного решета 0.00 из 5.00 0 оценок









Обсуждение в статье: Метод квадратичного решета

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (888)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)