Interested Article - Факторизация методом непрерывных дробей
- 2020-05-12
- 1
В теории чисел факторизация методом непрерывных дробей ( CFRAC ) — это алгоритм разложения целых чисел на простые множители . Это алгоритм общего вида, пригодный для факторизации произвольного целого .
Метод непрерывных дробей разработан на основе алгоритма Крайчика и использует непрерывную дробь , сходящуюся к для некоторого целого положительного числа . На основе метода непрерывных дробей был построен алгоритм Диксона , по схеме которого, затем, был разработан метод квадратичного решета .
Алгоритм имеет сложность , в O и L нотациях .
История
Метод непрерывных дробей был предложен Д. Г. Лемером и в 1931 году . Этот метод основывался на идеях Лежандра и и предназначался для разложения больших чисел, содержащих 30 и более десятичных разрядов . Однако, полученный метод не применялся из-за трудностей, связанных с его реализацией на настольных арифмометрах .
В конце 1960-х годов обнаружил, что этот метод хорошо подходит для компьютерного программирования , и совместно с , переработал этот алгоритм для ЭВМ в 1975 году .
В 1970-е годы алгоритм факторизации методом непрерывных дробей стал лучшим средством разложения на простые множители с использованием формата многократной точности. Программа, написанная Моррисоном и Бриллхартом, на компьютере IBM 360/91 обрабатывала произвольные 25-значные числа за 30 секунд, а 40-значные числа — за 50 минут. В 1970 году с помощью именно этого алгоритма была произведена факторизация седьмого числа Ферма :
Метод оставался популярным вплоть до начала 1980-х годов , когда появился метод квадратичного решета . После этого метод факторизации непрерывных дробей оказался неконкурентоспособным .
Описание алгоритма
Метод Лемера и Пауэрса
В 1643 году Пьер Ферма предложил алгоритм разложения на множители нечетного целого числа . Кратко этот алгоритм можно описать так: пусть . Тогда, можно записать
- ,
где .
Отсюда видно, что . Значит, если последовательно перебирать квадраты целых чисел , начиная с ближайшего сверху к квадрата, то на некоторой итерации разность окажется равна квадрату некоторого числа . Найденная пара чисел позволит найти пару множителей числа : .
Таким образом, метод Ферма сводит задачу факторизации числа к поиску целых чисел, разность которых равна исходному числу . Метод Ферма быстро находит множители числа в том случае, когда его делители близки к , т.е. для максимально негладких чисел. Если же число является гладким , то метод Ферма может работать даже медленней метода пробных делений .
В 1926 году в монографии представил свой метод факторизации целых чисел , который представлял собой «усиление» метода Ферма.
Крайчик предложил вместо пар чисел , удовлетворяющих соотношению , искать пары , удовлетворяющие сравнению , т.е. . Если, при этом, , то мы получим лишь тривиальное решение. Однако, если , то из указанного сравнения получается , где . Отсюда тоже следует разложение: делится на , но не делится ни на , ни на , следовательно — нетривиальный делитель (см. ).
После нововведения Крайчика алгоритм нахождения делителей числа значительно изменялся: теперь по-прежнему нужно вычислять для разных , однако теперь не требуется «ждать» другой квадрат, а нужно пытаться его построить, перемножая полученные числа .
Действительно, рассмотрим последовательность чисел вида (очевидно, ). Тогда, если , т.е. , то отсюда следует, что . Для того, чтобы определить, какие именно соотношения нужно перемножить, необходимо раскладывать числа на множители и перемножать соотношения так, чтобы в произведениях присутствовали простые множители в четных степенях, позволяющие получить сравнение .
Метод Крайчика сводит задачу разложения числа на множители к построению некоторого количества сравнений и разложению на множители чисел . Однако Крайчик не предъявил конкретный алгоритм поиска пар чисел и алгоритмический способ составления из найденных соотношений сравнения вида .
В 1931 году в работе Лемер и Пауэрс предложили два варианта генерации указанных сравнений. Оба варианта основывались на соотношениях, возникающих при разложении квадратичных иррациональностей в непрерывные дроби , и обладали тем свойством, что величины не превосходили . Последнее неравенство гарантирует, что числа будут маленькими, что облегчит разложение этих чисел на простые множители (см. ).
При этом, оба варианта оказываются эквивалентными : если один вариант алгоритма найдет решение, то и второй вариант также найдет решение.
Однако, у обоих вариантов алгоритма был недостаток — разложение квадратичной иррациональности в непрерывную дробь периодично ( теорема Лагранжа ). Поэтому количество соотношений, которые можно получить с помощью данного метода, ограниченно, и их может оказаться недостаточно для набора соотношений и построения сравнения . При этом, как показывают практические эксперименты, при больших значениях длина периода разложения в непрерывную дробь оказывается достаточно большой (порядка ) для составления требуемого числа сравнений. В результате при больших оба варианта алгоритма всегда находят разложение числа на множители .
Первый вариант
Напомним, что каждому действительному числу может быть поставлена в соответствие последовательность целых чисел , называемая его непрерывной дробью . Это сопоставление строится следующим образом
При этом
Если раскладывать в непрерывную дробь число , то возникающие в процессе разложения числа имеют вид с целыми , причем выполняется , .
Для коэффициентов выполняется равенство :
Отсюда следует
Полученное равенство имеет вид , предложенный Крайчиком, и может быть применено для факторизации числа .
Вычисляя последовательно частные , будем получать выражения вида для различных . Раскладывая величины на простые множители и комбинируя полученные равенства, можно получить сравнения вида (см. ).
Второй вариант
С каждой непрерывной дробью свяжем последовательность рациональных чисел , состоящую из подходящих дробей , вычисляемых по формулам :
и стремящихся к разлагаемому числу. Если в непрерывную дробь разлагается число , то справедливо соотношение :
- ,
из которого следует
Полученное равенство имеет вид и может быть использовано для факторизации числа так же, как и в первом варианте.
Алгоритм
Таким образом, исправленный Лемером и Пауэрсом метод Крайчика имеет следующий вид .
Вход . Составное число .
Выход . Нетривиальный делитель числа .
- Разложить в непрерывную дробь.
- Используя равенства или , получить множество сравнений вида и разложить числа на простые множители.
- Выбрать те равенства , перемножение которых даст произведение четных степеней простых чисел, полученных в результате разложения чисел . Тем самым, мы получим соотношение вида .
- Если , то вернуться на шаг 3. Если имеющегося числа соотношений недостаточно для генерации равенства , то необходимо продолжить разложение числа в непрерывную дробь и, затем, вернуться на шаг 2.
- С помощью алгоритма Евклида определить .
Лемер и Пауэрс в своей работе указали, как можно генерировать соотношения вида , однако они, также как и Крайчик, не дали алгоритмического способа составления из найденных соотношений сравнения . Эту проблему решил метод Моррисона и Бриллхарта.
Метод Моррисона и Бриллхарта
В начале 1970-х годов в статье Майкл Моррисон и Джон Бриллхарт предложили свой алгоритм, являющийся модификацией второго варианта алгоритма Лемера и Пауэрса. В настоящее время под методом непрерывных дробей понимают именно алгоритм Моррисона и Бриллхарта.
Основное отличие реализованного Моррисоном и Бриллхартом алгоритма от первоначального варианта заключалось в введении процедуры алгоритмического построения сравнения по заданному множеству сравнений вида . Для реализации этой процедуры использовалось понятие «факторной базы» .
Будем искать как произведение таких чисел , что наименьший по абсолютной величине вычет числа по модулю является произведением простых чисел . Тогда из тех же простых чисел можно построить и .
Базой факторизации (или факторной базой ) натурального числа называется множество различных простых чисел , за возможным исключением , которое может быть равным . При этом число , для которого является произведением степеней чисел из множества , называется B-гладким числом. Пусть теперь — B-гладкие числа, — разложения их наименьшие по абсолютной величине вычетов по модулю . Положим
- ,
где , — векторное пространство над полем GF(2) , которое состоит из наборов нулей и единиц размерности .
Подберем числа так, чтобы сумма векторов была равна нулю. Определим
- ,
где . Тогда .
Осталось добавить, что факторная база в алгоритме Моррисона и Бриллхарта состоит из тех простых чисел , по модулю которых является квадратичным вычетом .
Алгоритм
Алгоритм Моррисона и Бриллхарта выглядит следующим образом .
Вход . Составное число .
Выход . Нетривиальный делитель числа .
1. Построить базу разложения , где и — попарно различные простые числа, по модулю которых является квадратичным вычетом.
2. Берутся целые числа , являющиеся числителями подходящих дробей к обыкновенной непрерывной дроби , выражающей число . Из этих числителей выбираются чисел, для которых абсолютно наименьшие вычеты по модулю являются B -гладкими :
- ,
где . Также каждому числу сопоставляется вектор показателей .
3. Найти (например, методом Гаусса ) такое непустое множество , что , где — операция исключающее ИЛИ , , .
4. Положить . Тогда .
5. Если , то положить и выдать результат: .
- В противном случае вернуться на шаг 3 и поменять множество . (Обычно есть несколько вариантов выбора множества для одной и той же факторной базы . Если все возможности исчерпаны, то следует увеличить размер факторной базы).
Из полученного алгоритма впоследствии был разработан алгоритм Диксона , из которого был удален аппарат цепных дробей . После создания алгоритма Диксона, метод непрерывных дробей, по сути, представлял собой алгоритм Диксона, в котором был уточнен выбор абсолютно наименьшего вычета .
Некоторые улучшения
Пусть . Выше в непрерывную дробь раскладывалось число . Такой вариант эффективен, когда и близки друг к другу. Однако, чем больше разность между числами и , тем более трудоемким становится алгоритм. В этом случае вместо можно раскладывать в непрерывную дробь число , где маленький множитель подбирается так, чтобы в базу множителей вошли все малые простые .
Кроме того, так как метод непрерывных дробей построен по схеме алгоритма Диксона, то для него применимы дополнительные стратегии алгоритма Диксона.
Обоснование
Следующая лемма показывает, что если выполнено сравнение и , то числа и имеют общие делители.
Лемма (о факторизации) . Пусть — нечётное составное число и — вычеты по модулю такие, что и . Тогда выполняется неравенство .
Следующие два утверждения — ключевые для алгоритма факторизации методом непрерывных дробей. Они показывают, что можно найти последовательность чисел , квадраты которых имеют малые вычеты по модулю .
Теорема . Если , где , — подходящие дроби к числу , которое задано обыкновенной непрерывной дробью, то для всех справедлива оценка .
Следствие . Пусть положительное число не является полным квадратом и , где , — подходящие дроби к числу . Тогда для абсолютно наименьшего вычета (т.е. для вычета, расположенного между и ) справедливо неравенство , причем .
Примеры
- Пример 1
Разложим на множители первым алгоримом Лемера и Пауэрса число .
1. Будем раскладывать число в непрерывную дробь и записывать числа в таблицу для получения уравнений вида .
i | x i | A i | B i |
---|---|---|---|
1 | 32 | 57 | |
2 | 25 | 8 | |
3 | 31 | 15 | |
4 | 29 | 16 | |
5 | 19 | 45 | |
6 | 26 | 9 |
2. Теперь запишем сравнения для :
3. Перемножая четвертое и пятое сравнения, получим:
и, приводя подобные множители и сокращая на :
- или
4. Получили сравнение вида , используя которое можно найти делитель числа 1081. Действительно, . Тогда, второй делитель числа 1081 равен 47.
- Пример 2
Разложим на множители методом Морриса и Брилхарта число .
1. Строим базу разложения из маленьких простых чисел, выбирая числа, по модулю которых является квадратичным вычетом, что проверяется вычислением символов Лежандра :
Отсюда, факторная база будет равна , .
2. Ищем числители подходящих дробей к числу :
Выбираем те из них, для которых значения являются B-гладкими. Результаты вычислений записываем в таблицу:
k | i | P i | P 2 i | e i |
---|---|---|---|---|
1 | 2 | 27691 | (1, 0, 0, 1, 1, 0, 0) | |
2 | 3 | 50767 | (0, 1, 1, 0, 1, 0, 0) | |
3 | 6 | 1389169 | (1, 0, 0, 1, 0, 1, 0) | |
4 | 13 | 12814433311 | (0, 0, 0, 1, 1, 1, 0) | |
5 | 16 | 2764443209657 | (1, 1, 0, 0, 0, 0, 1) | |
6 | 18 | 20276855015255 | (1, 0, 0, 0, 0, 1, 0) | |
7 | 19 | 127498600693396 | (0, 0, 1, 1, 0, 0, 0) | |
8 | 24 | 2390521616955537 | (1, 0, 0, 0, 1, 0, 0) |
3. Поскольку , то получаем
4. ,
- ,
- .
5. Условие выполнено, поэтому вычисляем .
Поэтому, .
Вычислительная сложность
С появлением криптосистемы RSA в конце 1970-х годов стала особенно важна вычислительная сложность алгоритмов факторизации .
Эвристический анализ времени выполнения алгоритма Морриса и Брилхарта был проведен в 1975 году , хотя не был опубликован .
Более точная оценка(которая при этом все равно оставалась эвристической) была проведена в работе . Приведем результаты оценки сложности в соответствии с этой работой.
При получении оценок в этой работе делаются некоторые эвристические допущения. Например, предполагают, что если помощью алгоритма построено пар таких, что , то хотя бы для одной из них выполнены неравенства
- .
Утверждение . Если , и факторная база состоит из и всех простых чисел таких, что:
- ,
то при вычислении подходящих дробей, где , можно ожидать, что алгоритм разложит на два множителя с эвристической оценкой сложности арифметических операций .
См. также
- Факторизация
- Факторизация целых чисел
- Непрерывная дробь
- Метод факторизации Ферма
- Алгоритм Диксона
- Метод квадратичного решета
Примечания
- , pp. 439,441.
- ↑ .
- ↑ .
- ↑ , pp. 434.
- ↑ .
- , pp. 223.
- Kraitchik M. Théorie des Nombres. Tome I et II. — Paris:Gauthier-Villars. — 1926.
- ↑ , pp. 173.
- , pp. 175.
- , pp. 113.
- ↑ , pp. 178.
- ↑ , pp. 112-113.
- , pp. 173,185.
- , pp. 78.
- , pp. 220.
- , pp. 218-220.
- , pp. 439.
- , pp. 219.
- , pp. 114.
- , pp. 172.
- ↑ , pp. 219-220.
- , pp. 176-177.
- , pp. 221-222.
- , pp. 436.
- .
- , pp. 87.
Литература
- Lehmer D. H. , (англ.) // Bulletin (new series) of the American Mathematical Society. / — Providence: American Mathematical Society , 1931. — Vol. 33, Iss. 1. — P. 35—36. — ISSN ; —
- , (англ.) // — AMS , 1975. — Vol. 29, Iss. 129. — P. 183—205. — ISSN ; —
- Pomerance C. (англ.) // : Part I / H. Lenstra , — Amsterdam: Mathematisch Centrum , 1982. — P. 89—139.
- Манин, Ю. И., Панчишкин, А. А. Глава 3.4. Метод непрерывных дробей (CFRAC) и вещественные квадратичные поля // . — Итоги науки и техн. Сер. Соврем. пробл. мат. Фундам. направления. — М. : ВИНИТИ , 1990. — Т. 49. — С. 77-80. — 341 с.
- Pomerance C. (англ.) // Notices of the American Mathematical Society / — AMS , 1996. — Vol. 43. — P. 1473—1485. — ISSN ;
- Введение в криптографию / Ященко, В. В.. — Москва: МЦНМО , 1999. — 272 с. — ISBN 5-900916-40-5 .
- Коблиц Н. — 2-е издание — М. : , 2001. — С. 174—179. — 254 с. — ISBN 978-5-85484-014-9 , 978-5-85484-012-5
- — М. : МЦНМО , 2003. — 328 с. — ISBN 978-5-94057-103-2
- — М. : , 2006. — С. 219—222. — ISBN 978-5-85438-143-7
- — М. : Московский государственный институт электроники и математики , 2012. — С. 172—186. — 224 с. — ISBN 978-5-94506-320-4
- Кнут Д. Э. — 3-е издание — , 2013. — Т. 2. Получисленные алгоритмы. — 832 с. — ISBN 978-5-8459-0081-4
- 2020-05-12
- 1