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

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Заголовок с маленькой буквы p1-метод Полларда — один из методов факторизации целых чисел.

Впервые опубликован британским математиком Шаблон:Iw в 1974 годуШаблон:Sfn. Именно появление данного алгоритма привелоШаблон:Source-ref к изменению понятия сильного простого числа, используемого в криптографии, нестрого говоря, простого числа, для которого p1 имеет достаточно большие делители. В современных криптосистемах стараютсяШаблон:Source-ref использовать именно сильные простые числа, так как это повышает стойкость используемых алгоритмов и систем в целом.

Определения и математические сведения

Число называется B-Шаблон:IwШаблон:Sfn, если все его простые делители, в степенях, в которых они входят в разложение этого числа pν, удовлетворяют pνB. Согласно малой теореме Ферма для любого простого числа p и для любого целого числа a, такого что a и p взаимно просты, или, что в данном случае равносильно, p не делит a, справедливо:

a(p1)1modp, более того M=(p1)l,lNaM1modp.

Оригинальный алгоритм (1974 год)

Джон Поллард впервые опубликовал описанный ниже алгоритм в своей статье «Методы факторизации и проверка простоты» («Theorems of Factorization and Primality Testing») в 1974 году в «Трудах Кембриджеского философского общества»Шаблон:Sfn. Статья посвящена теоретической оценке сложности факторизации большого числа N или же, в случае простого N, проверке его на простоту. Нижеприведённый алгоритм явился следствием и иллюстрацией теоретических выкладок Полларда.

Первая стадия

  1. Задача состоит в том, чтобы найти собственный делитель числа N отличный от единицы. Прежде всего необходимо выбрать два числа B,M, такие, что 1<B<M<N,M<B2.
  2. Вычислим теперь число M(B)=k=1mpkck, где pk — все простые числа меньшие B. Здесь допускается некоторая свобода в выборе ck, однако точно известно, что для маленьких pk, ck должно быть больше единицыШаблон:Sfn.
  3. Выберем небольшое целое a>1 и вычислим
b=aM(B)modN
q=(b1,N) если q1 мы нашли делитель N, в противном случае переходим ко второй стадии.

Вторая стадия

  • На этом шаге необходимо вычислить последовательность
Fmbm11modN, где m — простое, B<m<M, надеясь, что на каком-нибудь шаге получится
gm=(Fm,N)>1
  • Легче всегоШаблон:Sfn это сделать вычислением bm для каждого нечётного m домножением на b2, беря Gi=(bi,N) через равные промежутки. Если 1<Gi<N делитель найден. Если же Gi=N,Gi1=1, то необходимо точнее исследовать этот участок.

Замечание

С помощью данного метода мы сможем найти только такие простые делители p числа N, для которых выполненоШаблон:Sfn:

p1=A или p1=Aq, где A является B-гладкостепенным, а q — простое, такое что B<q<MШаблон:Sfn.

Современная версия

Эта переработанная по сравнению с оригинальной версия алгоритма использует понятия Шаблон:Iw и ориентирована на практическое применение. Значительные изменения претерпела первая стадия, в то время, как вторая сохранилась практически без изменений, опять же, с теоретической точки зрения, ничего значительного, по сравнению предыдущей версией, добавлено не было. Именно приведённый ниже алгоритм имеют в виду, когда говорят о «методе Полларда»Шаблон:SfnШаблон:Sfn.

Первая стадия

  1. Пусть N B-гладкостепенное, и требуется найти делитель числа N. В первую очередь вычисляется число M(B)=ipiki где произведение ведётся по всем простым pi в максимальных степенях ki:piki<B
  2. Тогда искомый делитель q=(b1,N)Шаблон:Sfn, где b=aM(B)modN.
  • Возможно два случая, в которых приведенный выше алгоритм не даст результатаШаблон:Sfn.
  1. В случае, когда (b1,N)=N точно можно сказать, что у n есть делитель, являющийся B-гладкостепенным и проблему должен решить иной выбор a.
  2. В более частом случае, когда (b1,N)=1 стоит перейти ко второй стадии алгоритма, которая значительно повышает вероятность результата, хотя и не гарантирует его.

Пример

Пусть N=10001 выберем B=10, тогда M(B)=233257=2520, возьмём a=2 и вычислим теперь b=aM(B)modN=22520mod10001=3578, и наконец (b1,N)=(35781,10001)=73.

Замечания

  • При больших B число M(B) может оказаться весьма большим, сравнимым по значению с B!, в таких случаях может оказаться целесообразно разбить M(B) на множители приблизительно одинаковой величины M(B)=iMi и вычислять последовательность
a1=aM1modN;
ak+1=akMk+1modN.

Вторая стадия

  • Прежде всего необходимо зафиксировать границы B1=B,B2B, обычно B2B2Шаблон:SfnШаблон:Sfn.
  • Вторая стадия алгоритма находит делители N, такие что p1=qA, где AB-гладкостепенное, а q простое, такое что B1<q<B2.
  1. Для дальнейшего нам потребуется вектор из простых чисел qi от B1 до B2, из которого легко получить вектор разностей между этими простыми числами D=(D1,D2,...),Di=qi+1qi, причём Di — относительно небольшие числа, и DiΔ, где Δ — конечно множествоШаблон:Sfn. Для ускорения работы алгоритма полезно предварительно вычислить все bδi,δiΔШаблон:Sfn и при пользоваться уже готовыми значениями.
  2. Теперь необходимо последовательно вычислять c0=b1modN,ci=ci1δimodN, где b1=aM(B1)modN, вычисленное в первой стадии, на каждом шаге считая G=(ci1,N). Как только G1, можно прекращать вычисления.

Условия сходимости

  • Пусть p наименьший делитель N, qt=max(qiti) максимум берется по всем степеням qiti, делящим p1Шаблон:Sfn.
    • Если qt<B1, то делитель будет найден на первой стадии алгоритмаШаблон:Sfn.
    • В противном случае для успеха алгоритма необходимо, чтобы qt<B2, а все остальные делители p1 вида qr были меньше B1Шаблон:Sfn.

Модификации и улучшения

Оценка эффективности

  • Сложность первой стадии оценивается как O(BlnB(lnN)2+(lnN)3), оставляя только слагаемое высшего порядка получаем оценку первой стадии алгоритмаШаблон:Sfn O(BlnB(lnN)2).
  • Согласно оценке Монтгомери, сложность второй стадии, с точностью до слагаемых наивысшего порядка составляет O(π(B2))Шаблон:SfnШаблон:Sfn, где π(s) — число простых чисел, меньших s. Оценка Чебышева дает приближённое равенство π(s)slns.

Рекорды

На данный момент (10.10.2016) три самых больших простых делителя, найденных методом P-1, состоят из 66, 64 и 59 десятичных цифр[1].

Кол-во цифр p Делитель числа Кем найден Когда найден B B2
66 672038771836751227845696565342450315062141551559473564642434674541
= 22 · 3 · 5 · 7 · 17 · 23 · 31 · 163 · 401 · 617 · 4271 · 13681 · 22877 · 43397 · 203459 · 1396027 · 6995393 · 13456591 · 2110402817 + 1
9601191 Т. Ногара 29.06.2006 108 1010
64 1939611922516629203444058938928521328695726603873690611596368359
= 2 · 3 · 11 · 1187 · 9233729 · 13761367 · 43294577 · 51593573 · 100760321 · 379192511 · 2282985164293 + 1
102434101211 М. Тервурен 13.09.2012 109 1013
59 12798830540286697738097001413455268308836003073182603569933
= 22 · 17 · 59 · 107 · 113 · 20414117 · 223034797 · 269477639 · 439758239 · 481458247 · 1015660517 + 1
8069000260399979023963141171 A. Круппа 30.06.2011 109 1010

Применения

  • GMP-ECM[2] — пакет включает в себя эффективное применение p1-метода.
  • Prime95 и MPrime — официальные клиенты GIMPS — используют метод, чтобы отсеять кандидатов.

См. также

Шаблон:Навигация

Примечания

Шаблон:Примечания

Литература