Метод факторизації Ферма

Метод факторизації Ферма алгоритм факторизації (розклад на множники) непарного цілого числа n, представлений П'єром Ферма (1601—1665) у 1643 році.

Метод заснований на пошуку таких цілих чисел і , які задовольняють відношення , що веде до розкладу .

Історія

На початку XVII століття у Франції математичні ідеї почали активно поширюватися між вченими за допомогою листування. В 1638 році до кола вчених, які листувалися приєднався П'єр Ферма. Листування було зручним способом спілкування, так як Ферма жив в Тулузі, а багато його знайомих вчених жили в Парижі.

Одним таким вченим був Марен Мерсенн, який займався розповсюдженням листів, пересиланням і зв'язком багатьох вчених між собою. 26 грудня 1638 року в листі Мерсенну Ферма згадав, що знайшов метод, за допомогою якого можна знаходити подільники позитивних чисел, але будь-які подробиці і опис методу він опустив. На той момент Мерсенн також вів листування з французьким математиком Бернаром Френіклєм де Бессі, який займався, як і Ферма, теорією чисел, зокрема, дільниками натуральних чисел і досконалими числами. На початку 1640 року, дізнавшись про те, що Ферма отримав метод знаходження дільників, Френікль пише Мерсенну, і той пересилає лист Ферма.

Мерсенн довгий час був сполучною ланкою між двома математиками в їх листуванні. Саме в листах Френіклю Ферма зміг довести коректність методу факторизації, а також вперше сформулювати і обґрунтувати основні положення теореми, яка пізніше була названа Малою теоремою Ферма.

Обґрунтування

Метод Ферма заснований на теоремі про подання числа у вигляді різниці двох квадратів :

Якщо непарне, то існує взаємно однозначна відповідність між розкладанням на множники і поданням у вигляді різниці квадратів з , що задається формулами

Опис алгоритму

Для розкладання на множники непарного числа шукається пара чисел таких, що , або . При цьому числа і є множниками , можливо, тривіальними (тобто одне з них дорівнює 1, а інше .)

У нетривіальною випадку, рівність рівносильно , тобто того, що є квадратом.

Пошук квадрата такого виду починається з  — найменшого числа, при якому різниця невід'ємна.

Для кожного значення починаючи з , обчислюють і перевіряють, чи не є це число точним квадратом. Якщо не є, то збільшують на одиницю і переходять на наступну ітерацію.

Якщо є точним квадратом, тобто то отримано розкладання:

в якому

Якщо воно є тривіальним і єдиним, то  — просте.

На практиці значення виразу на -ому кроці вираховується з врахуванням значення на -ому кроці:

де

Приклади

Приклад з малим числом ітерацій

Візьмемо число . Обчислимо Для будемо обчислювати значення функції . Для подальшої простоти побудуємо таблицю, яка буде містити значення і на кожному кроці ітерації. отримаємо:

1 363 19,052
2 576 24

Як видно з таблиці, вже на другому кроці ітерації було отримано ціле значення .

Таким чином має місце такий вираз: . Звідси випливає, що

Приклад з великим числом ітерацій


Нехай Тоді або

77 52374 228,854
78 53129 230,497
79 53886 232,134
80 54645 233,763
81 55406 235,385
82 56169 237

Цей розклад не є остаточним, оскільки число не є простим:

У підсумку, остаточний розклад початкового числа на добуток простих множників

Оцінка складності

Найбільша ефективність розрахунку методом факторизації Ферма досягається в разі, коли множники числа приблизно рівні між собою. Це забезпечує відносно короткий пошук послідовності

У найгіршому варіанті, коли, наприклад, близько до а близько до 1, алгоритм Ферма працює гірше в порівнянні з методом перебору дільників. Число ітерацій для даного випадку:

тобто, очевидно, що воно має порядок

Метод факторизації Ферма буде працювати не гірше методу перебору дільників, якщо , звідси можна отримати оцінку для більшого дільника Отже, метод Ферма має експонентну оцінку і, як метод пробного поділу, не підходить для розкладання великих чисел. Можна вдосконалити його, якщо виконати спочатку пробний поділ на числа від 2 до деякої константи B, а потім виконати пошук дільників методом Ферма. Такий похід допомагає позбутися від малих дільників числа .

Удосконалення

Комбінація з методом перебору дільників

Припустимо, що ми намагаємося розкласти на множники число n = 2345678917 методом Ферма, але крім b обчислюємо також і ab. Починаючи з , можна записати:

a 48 43348 43448 43548 436
b2 76 572173 439270 308367 179
b 276,7416,5519,9605,9
ab 48 156,348 017,547 915,147 830,1

Якщо тепер для розкладання числа застосувати метод перебору дільників, то доцільно перевіряти дільники лише до 47 830 (а не до 48 432), бо якби існував більший дільник, то його було б знайдено методом Ферма. Отже, можна сказати, що за чотири кроки методу Ферма було перевірено всі можливі дільники у діапазоні від 47 830 до 48 432.

Таким чином, можна комбінувати метод Ферма з методом перебору дільників. Досить вибрати число і застосовувати метод Ферма для перевірки дільників між і , а дільники, що залишилися, перевірити методом перебору дільників, причому перевіряти потрібно тільки до числа .

У наведеному вище прикладі, коли , перебирати дільники необхідно до числа 47830. Можна вибрати більше число с. Наприклад знижує межу для перебирання дільників до 28937.

Комбінація методів дає кращий результат, бо якщо різниця між дільниками числа велика, то метод перебору дільників ефективніший методу Ферма. Це ілюструє наступний приклад:

a 60 00160 002
b2 1 254 441 0841 254 561 087
b 35 418,135 419,8
ab 24 582,924 582,2

Метод решета

При пошуку квадрата натурального числа в послідовності чисел годі й обчислювати квадратний корінь з кожного значення цієї послідовності, і навіть не перевіряти всі можливі значення для a. Для прикладу розглянемо число :

a 48 43348 43448 43548 436
b2 76 572173 439270 308367 179
b 276,7416,5519,9605,9

Можна відразу, не обчислюючи квадратного кореня, сказати, що жодне зі значень в таблиці не є квадратом. Досить, наприклад, скористатися тим, що всі квадрати натуральних чисел, взяті по модулю 20, дорівнюють одному з наступних значень: 0, 1, 4, 5, 9, 16. Ці значення повторюються при кожному збільшенні a на 10. У прикладі по модулю 20, тому віднімаючи 17 (або додаючи 3), отримуємо, що число по модулю 20 дорівнює одному з наступних: 3, 4, 7, 8, 12, 18. Але оскільки  — натуральне число, то звідси отримуємо, що по модулю 20 може дорівнювати лише 4. Отже, по модулю 20 і або по модулю 10. Таким чином, можна перевіряти корінь виразу не для всіх , а тільки для тих, які закінчуються на 1 або 9.

Аналогічно як модуль можна використовувати будь-які ступені різних простих чисел. Наприклад, взявши те ж число , знаходимо:

По модулю 16:Квадрати рівні0, 1, 4 або 9
n mod 16 рівне5
отже, рівне9
і a рівне3, 5, 11 або 13 по модулю 16
По модулю 9:Квадрати рівні0, 1, 4, або 7
n mod 9 рівне7
отже, рівне7
і a рівне4 або 5 по модулю 9

Удосконалення шляхом домноження

Метод Ферма добре працює коли у числа є множник, близький до квадратного кореня з .

Якщо ж відомо приблизне співвідношення між множниками числа , то можна вибрати раціональне число , приблизно рівне цьому співвідношенню. Тоді можна записати таку рівність: , де множники і близькі в силу зроблених припущень. Тому застосувавши метод Ферма для розкладання числа , їх можна досить швидко знайти. Далі для пошуку і можна застосувати рівності і (у разі, якщо не ділиться на і не ділиться на ).

У загальному випадку, коли співвідношення між множниками невідоме, можна перебрати різні співвідношення , і спробувати розкласти числа . Алгоритм, заснований на цьому методі, запропонував американський математик Шерман Леман в 1974 році і його називали методом Лемана. Алгоритм детерміновано розкладає на множники задане натуральне число за арифметичних операцій, проте в даний час[коли?] становить тільки історичний інтерес і на практиці майже не застосовується.

Метод Крайчика—Ферма

Узагальнення методу Ферма запропонував Моріс Крайчик в 1926 році. Замість пар чисел які задовольняють співвідношенню , Крайчик запропонував шукати пари чисел, що задовольняють більш загальному порівнянню Таке порівняння можна знайти, перемноживши кілька порівнянь виду , де  — невеликі числа, добуток яких буде квадратом. Для цього можна розглянути пари чисел , де  — цілий числа трохи більше , а . Крайчик зауважив, що багато з отриманих таким чином чисел розкладаються на невеликі прості множники, тобто числа є гладкими

Приклад

За допомогою метода Крайчика-Ферма розкладемо число . Число є першим, чий квадрат більший за число : [2].

Визначимо функцію для всіх Ми отримаємо

За методом Ферма, потрібно було б продовжувати розрахунок, доки не буде знайдено квадрат якого-небудь числа. За методом Крайчика—Ферма потрібно знайти кілька таких , добуток яких являє собою квадрат. Якщо і , тоді

[2]

Крайчик відзначив, що деякі з отриманих чисел можна легко факторизувати.

Справді:

А з отриманого розкладу можна побачити, що добуток цих чотирьох чисел являє собою повний квадрат: Тепер можна обчислити

Оскільки , то за алгоритмом Евкліда обчислюємо найбільшого спільного дільника (1416 - 311) та 2041:

.

Таким чином,

Алгоритм Діксона

У 1981 році математик Карлтонського університету Джон Діксон опублікував розроблений ним метод факторизації на основі ідеї Крайчика. Алгоритм Діксона заснований на понятті про факторні бази і є узагальненням алгоритму факторизації Ферма. В алгоритмі замість пар чисел, що задовольняють рівняння шукають пари чисел, що задовольняють більш загальному порівнянню , для розв'язку якого Крайчиком помітив декілька корисних фактів. Обчислювальна складність алгоритму

де

Інші вдосконалення

Ідея методу факторизації Ферма лежить в основі найшвидших відомих методів факторизації великих напівпростих чисел  методу квадратичного решета і загального методу решета числового поля. Основна відмінність методу квадратичного решета від методу Ферма полягає в тому, що замість пошуку квадрата в послідовності шукають пари таких чисел, чиї квадрати рівні по модулю (кожна з цих пар може бути розкладанням числа ). Потім вже серед знайдених пар чисел шукають ту пару, яка і є розкладанням числа

Розвитком методу факторизації Ферма є метод квадратичних форм Шенкса (також відомий як SQUFOF), ґрунтований на застосуванні квадратичних форм. Цікаво, що для 32-розрядних комп'ютерів алгоритми, ґрунтуються на даному методі, і є безумовними лідерами серед алгоритмів факторизації для чисел від до [джерело?].

Застосування

Алгоритм факторизації Ферма можна застосувати для криптоаналізу RSA. Якщо випадкові числа , добуток яких дорівнює , близькі одне до одного, то їх можна знайти методом факторизації Ферма. Після чого можна знайти секретну експоненту , зламавши таким чином RSA [3] [4]. На час публікації алгоритму RSA (1977 рік) було відомо небагато алгоритмів факторизації, найвідомішим серед яких був метод Ферма.

Цікаві факти

Відомий англійський економіст і логіст У. С. Джевонс зробив у своїй книзі «Принципи науки» («The Principles of Science», 1874 року таке припущення:

За даними двома числами можна знайти їх добуток простим і надійним способом, але зовсім інша справа, коли для великого числа необхідно знайти його множники. Чи можна сказати, які два числа перемножити, щоб вийшло число 8 616 460 799? Я думаю, що навряд чи хто-небудь окрім мене знає це.[5]

Вказане Джевонсом число може бути розкладено вручну методом Ферма із застосуванням методу решета приблизно за 10 хвилин. Справді, . Використовуючи метод решета, можна швидко прийти до співвідношення:

Таким чином розклад на прості множники має вид .

Втім, основна думка Джевонса — про складність розкладання чисел на прості множники в порівнянні з їх перемноженням — справедлива, але тільки в тому випадку, коли мова про добуток чисел, що не настільки близькі одне до одного.

Примітки

  1. Нестеренко, 2011, с. 164.
  2. C. Pomerance. A Tale of Two Sieves, 1996, с. 1495.
  3. Benne de Weger. Revisiting Fermat’s Factorization for the RSA Modulus. — Appl. Algebra Eng. Commun. Comput., 2002. Т. 13, № 1. С. 17–28. DOI:10.1007/s002000100088.
  4. Sounak Gupta, Goutam Paul. Revisiting Fermat’s Factorization for the RSA Modulus. — CoRR, 2009. Т. abs/0910.4179.
  5. Principles of Science, Macmillan & Co., 1874, p. 141.

Література

  • Задірака В. К., Олексюк О. С. Комп'ютерна арифметика багаторозрядних чисел: наукове видання. — К.: 2003. — 264 с.
  • Метод факторизації великорозрядних чисел у базисі Радемахера / С. В. Івасьєв // Вісн. Нац. ун-ту «Львів. політехніка». — 2012. — № 745. — С. 85-91. — Бібліогр.: 6 назв.
  • Метод факторизації: навч. посіб. для студентів ВНЗ / Г. Я. Попов, В. І. Острик ; М-во освіти і науки України, Одес. нац. ун-т ім. І. І. Мечникова. — Одеса: ОНУ, 2014. — 118 с. : іл. — Бібліогр.: с. 114—116 (32 назви). — ISBN 978-617-689-066-9
  • Удосконалений метод Ферма факторизації чисел / Л. Тимошенко, С. Івасьєв, К. Вербик // Проблеми становлення інформаційної економіки в Україні: матеріали Всеукр. наук.-практ. конф.; м. Львів, 23-25 жовтня 2014 р. МОН України, Львівський нац. ун-т ім. І. Франка. — Л. : Ліга-Прес, 2014. — С. 280—283
російською мовою
англійською мовою
французькою мовою
  1. Kraitchik M. ANALYSE INDÉTERMINÉE DU SECOND DEGRÉ ET FACTORISATION. CHAPITRE XIV. // THEORIE DES NOMBRES. — Paris : Gauthier-Villars, 1926. — Т. 2. — С. 195-208. — ISBN 0-387-97040-1.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.