-метод Полларда — один из методов факторизации целых чисел.
Впервые опубликован британским математиком Джоном Поллардом[en] в 1974 году[1]. Именно появление данного алгоритма привело[2] к изменению понятия сильного простого числа, используемого в криптографии, нестрого говоря, простого числа, для которого
имеет достаточно большие делители. В современных криптосистемах стараются[2] использовать именно сильные простые числа, так как это повышает стойкость используемых алгоритмов и систем в целом.
Определения и математические сведения
Число называется
-гладкостепенным[en][3], если все его простые делители, в степенях, в которых они входят в разложение этого числа
, удовлетворяют
. Согласно малой теореме Ферма для любого простого числа
и для любого целого числа
, такого что
и
взаимно просты, или, что в данном случае равносильно,
не делит
, справедливо:
, более того
.
Оригинальный алгоритм (1974 год)
Джон Поллард впервые опубликовал описанный ниже алгоритм в своей статье «Методы факторизации и проверка простоты» («Theorems of Factorization and Primality Testing») в 1974 году в «Трудах Кембриджеского философского общества»[1]. Статья посвящена теоретической оценке сложности факторизации большого числа
или же, в случае простого
, проверке его на простоту. Нижеприведённый алгоритм явился следствием и иллюстрацией теоретических выкладок Полларда.
Первая стадия
- Задача состоит в том, чтобы найти собственный делитель числа
отличный от единицы. Прежде всего необходимо выбрать два числа
такие, что
.
- Вычислим теперь число
, где
— все простые числа меньшие
. Здесь допускается некоторая свобода в выборе
, однако точно известно, что для маленьких
,
должно быть больше единицы[1].
- Выберем небольшое целое
и вычислим
если
мы нашли делитель
, в противном случае переходим ко второй стадии.
Вторая стадия
- На этом шаге необходимо вычислить последовательность
где
— простое,
, надеясь, что на каком-нибудь шаге получится
- Легче всего[1] это сделать вычислением
для каждого нечётного
домножением на
, беря
через равные промежутки. Если
делитель найден. Если же
, то необходимо точнее исследовать этот участок.
Современная версия
Эта переработанная по сравнению с оригинальной версия алгоритма использует понятия степенной гладкости[en] и ориентирована на практическое применение. Значительные изменения претерпела первая стадия, в то время, как вторая сохранилась практически без изменений, опять же, с теоретической точки зрения, ничего значительного, по сравнению предыдущей версией, добавлено не было. Именно приведённый ниже алгоритм имеют в виду, когда говорят о «методе Полларда»[4][5].
Первая стадия
- Пусть
-гладкостепенное, и требуется найти делитель числа
. В первую очередь вычисляется число
где произведение ведётся по всем простым
в максимальных степенях
- Тогда искомый делитель
[4], где
.
- Возможно два случая, в которых приведенный выше алгоритм не даст результата[5].
- В случае, когда
точно можно сказать, что у
есть делитель, являющийся
-гладкостепенным и проблему должен решить иной выбор
.
- В более частом случае, когда
стоит перейти ко второй стадии алгоритма, которая значительно повышает вероятность результата, хотя и не гарантирует его.
Замечания
- При больших
число
может оказаться весьма большим, сравнимым по значению с
, в таких случаях может оказаться целесообразно разбить
на множители приблизительно одинаковой величины
и вычислять последовательность
.
Вторая стадия
- Прежде всего необходимо зафиксировать границы
, обычно
[5][4].
- Вторая стадия алгоритма находит делители
, такие что
, где
—
-гладкостепенное, а
простое, такое что
.
- Для дальнейшего нам потребуется вектор из простых чисел
от
до
, из которого легко получить вектор разностей между этими простыми числами
, причём
— относительно небольшие числа, и
, где
— конечно множество[4]. Для ускорения работы алгоритма полезно предварительно вычислить все
[4] и при пользоваться уже готовыми значениями.
- Теперь необходимо последовательно вычислять
, где
, вычисленное в первой стадии, на каждом шаге считая
. Как только
, можно прекращать вычисления.
Условия сходимости
- Пусть
наименьший делитель
,
максимум берется по всем степеням
, делящим
[4].
- Если
, то делитель будет найден на первой стадии алгоритма[4].
- В противном случае для успеха алгоритма необходимо, чтобы
, а все остальные делители
вида
были меньше
[4].
Модификации и улучшения
- Позднее сам Поллард высказал мнение о возможности ускорения алгоритма с использованием быстрого преобразования Фурье[4] во второй стадии, однако он не привел реальных способов, как сделать это[6].
- Ещё позже, в 1990 году это сделали математики Питер Монтгомери (Peter Montgomery) и Роберт Силверман (Robert Silverman)[6]. Авторам удалось добиться увеличения скорости исполнения второй стадии алгоритма.
Оценка эффективности
- Сложность первой стадии оценивается как
, оставляя только слагаемое высшего порядка получаем оценку первой стадии алгоритма[4]
.
- Согласно оценке Монтгомери, сложность второй стадии, с точностью до слагаемых наивысшего порядка составляет
[1][4], где
— число простых чисел, меньших
. Оценка Чебышева дает приближённое равенство
.
Применения
- GMP-ECM[8] — пакет включает в себя эффективное применение
-метода.
- Prime95 и MPrime — официальные клиенты GIMPS — используют метод, чтобы отсеять кандидатов.
Примечания
- 1 2 3 4 5 6 7 Pollard, 1974.
- 1 2 Karaarslan E. Primality Testing Techniques and The Importance of Prime Numbers in Security Protocols // ICMCA'2000: Proceedings of the Third International Symposium Mathematical & Computational Applications — Konya: 2000. — P. 280–287.
<a href='https://wikidata.org/wiki/Track:Q27184049'></a><a href='https://wikidata.org/wiki/Track:Q27184015'></a><a href='https://wikidata.org/wiki/Track:Q79857'></a><a href='https://wikidata.org/wiki/Track:Q27184054'></a>
- ↑ Василенко, 2003, с. 60.
- 1 2 3 4 5 6 7 8 9 10 11 Ишмухаметов, 2011, с. 53—55.
- 1 2 3 Cohen, 2000, pp. 439.
- 1 2 Montgomery, Silverman, 1990.
- ↑ Циммерман, Поль. Record Factors Found By Pollard's p-1 Method (англ.). Les pages des personnels du LORIA et du Centre Inria NGE.
- ↑ InriaForge: GMP-ECM (Elliptic Curve Method): Project Home
Литература
- Pollard J. M. Theorems on factorization and primality testing // Mathematical Proceedings of the Cambridge Philosophical Society / B. J. Green — Cambridge University Press, 1974. — Vol. 76, Iss. 3. — P. 521–528. — ISSN 0305-0041; 1469-8064 — doi:10.1017/S0305004100049252
<a href='https://wikidata.org/wiki/Track:Q6786838'></a><a href='https://wikidata.org/wiki/Track:Q792628'></a><a href='https://wikidata.org/wiki/Track:Q27095084'></a><a href='https://wikidata.org/wiki/Track:Q912887'></a><a href='https://wikidata.org/wiki/Track:Q122150'></a>
- Коэн А. A Course in Computational Algebraic Number Theory — 4th Print Edition — Берлин, Гейдельберг, Нью-Йорк: Springer, 2000. — 550 с. — (Graduate Texts in Mathematics) — ISBN 978-3-540-55640-4 — ISSN 0072-5285
<a href='https://wikidata.org/wiki/Track:Q64'></a><a href='https://wikidata.org/wiki/Track:Q3113164'></a><a href='https://wikidata.org/wiki/Track:Q60'></a><a href='https://wikidata.org/wiki/Track:Q27095334'></a><a href='https://wikidata.org/wiki/Track:Q983314'></a><a href='https://wikidata.org/wiki/Track:Q2966'></a>
- Василенко О. Н. Теоретико-числовые алгоритмы в криптографии — М.: МЦНМО, 2003. — 328 с. — ISBN 978-5-94057-103-2
<a href='https://wikidata.org/wiki/Track:Q22304524'></a><a href='https://wikidata.org/wiki/Track:Q22304550'></a>
- Ишмухаметов Ш. Т. Методы факторизации натуральных чисел: учебное пособие — Казань: Казанский университет, 2011. — С. 53–55. — 190 с.
<a href='https://wikidata.org/wiki/Track:Q113788'></a><a href='https://wikidata.org/wiki/Track:Q27048273'></a><a href='https://wikidata.org/wiki/Track:Q900'></a><a href='https://wikidata.org/wiki/Track:Q27048271'></a>
- Montgomery P., Silverman R. D. An FFT extension to the P-1 factoring algorithm // Math. Comp. — AMS, 1990. — Vol. 54, Iss. 190. — P. 839–854. — ISSN 0025-5718; 1088-6842 — doi:10.1090/S0025-5718-1990-1011444-3
<a href='https://wikidata.org/wiki/Track:Q27094754'></a><a href='https://wikidata.org/wiki/Track:Q470485'></a><a href='https://wikidata.org/wiki/Track:Q465654'></a><a href='https://wikidata.org/wiki/Track:Q6786906'></a><a href='https://wikidata.org/wiki/Track:Q27095017'></a>
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .