Метод факторизації ФермаМетод факторизації Ферма — алгоритм факторизації (розклад на множники) непарного цілого числа n, представлений П'єром Ферма (1601—1665) у 1643 році. Метод заснований на пошуку таких цілих чисел і , які задовольняють відношення , що веде до розкладу . ІсторіяНа початку XVII століття у Франції математичні ідеї почали активно поширюватися між вченими за допомогою листування. В 1638 році до кола вчених, які листувалися приєднався П'єр Ферма. Листування було зручним способом спілкування, так як Ферма жив в Тулузі, а багато його знайомих вчених жили в Парижі. Одним таким вченим був Марен Мерсенн, який займався розповсюдженням листів, пересиланням і зв'язком багатьох вчених між собою. 26 грудня 1638 року в листі Мерсенну Ферма згадав, що знайшов метод, за допомогою якого можна знаходити подільники позитивних чисел, але будь-які подробиці і опис методу він опустив. На той момент Мерсенн також вів листування з французьким математиком Бернаром Френіклєм де Бессі, який займався, як і Ферма, теорією чисел, зокрема, дільниками натуральних чисел і досконалими числами. На початку 1640 року, дізнавшись про те, що Ферма отримав метод знаходження дільників, Френікль написав Мерсенну, і той переслав листа Ферма. Мерсенн довгий час був сполучною ланкою між двома математиками в їх листуванні. Саме в листах Френіклю Ферма зміг довести коректність методу факторизації, а також вперше сформулювати й обґрунтувати основні положення теореми, яка пізніше була названа Малою теоремою Ферма. ОбґрунтуванняМетод Ферма заснований на теоремі про подання числа у вигляді різниці двох квадратів :
Доведення
Якщо задана факторизація , тоді має місце відношення: . Таким чином виходить уявлення у вигляді різниці двох квадратів. Назад, якщо дано, що , то праву частину можна розкласти на множники: . Опис алгоритмуДля розкладання на множники непарного числа шукається пара чисел таких, що , або . При цьому числа і є множниками , можливо, тривіальними (тобто одне з них дорівнює 1, а інше — .) У нетривіальною випадку, рівність рівносильно , тобто того, що є квадратом. Пошук квадрата такого виду починається з — найменшого числа, при якому різниця невід'ємна. Для кожного значення починаючи з , обчислюють і перевіряють, чи не є це число точним квадратом. Якщо не є, то збільшують на одиницю і переходять на наступну ітерацію. Якщо є точним квадратом, тобто то отримано розкладання:
Якщо воно є тривіальним і єдиним, то — просте. На практиці значення виразу на -ому кроці вираховується з врахуванням значення на -ому кроці:
ПрикладиПриклад із малим числом ітераційВізьмемо число . Обчислимо Для будемо обчислювати значення функції . Для подальшої простоти побудуємо таблицю, яка буде містити значення і на кожному кроці ітерації. отримаємо:
Як видно з таблиці, вже на другому кроці ітерації отримано ціле значення . Таким чином має місце рівність: . Звідки випливає, що Приклад із більшою кількістю ітераційНехай Тоді або
Цей розклад не є остаточним, оскільки число не є простим: У підсумку, остаточний розклад початкового числа на добуток простих множників Оцінка складностіНайбільша ефективність розрахунку методом факторизації Ферма досягається в разі, коли множники числа приблизно рівні між собою. Це забезпечує відносно короткий пошук послідовності . У найгіршому варіанті, коли, наприклад, близько до а близько до 1, алгоритм Ферма працює гірше в порівнянні з методом перебору дільників. Число ітерацій для даного випадку: тобто, очевидно, що воно має порядок Метод факторизації Ферма буде працювати не гірше методу перебору дільників, якщо , звідки можна отримати оцінку для більшого дільника Отже, метод Ферма має експоненційну оцінку і, як метод пробного поділу, не підходить для розкладання великих чисел. Можна вдосконалити його, якщо виконати спочатку пробний поділ на числа від 2 до деякої константи B, а потім виконати пошук дільників методом Ферма. Такий похід допомагає позбутися від малих дільників числа . УдосконаленняВідсіюванняПри пошуку квадрата натурального числа в послідовності чисел не обов'язково обчислювати квадратний корінь із кожного значення цієї послідовності. Для попереднього відсіювання можна скористатися тим, що квадрат натурального числа по модулю будь-якого числа має бути квадратичним лишком. Наприклад, будь-який квадрат по модулю 5 дорівнює одному з наступних значень: 0, 1, 4. Можна попередньо обчислити квадратичні лишки для кількох простих чисел , і перевіряти чи належить до обчисленої множини. Лише коли є квадратичним лишком за всіма вибраними , здійснюється обчислення кореня[1]. Як модуль можна застосовувати й степені простих чисел, зокрема, двійки. Наприклад, по модулю 16 усі квадрати рівні 0, 1, 4 або 9. Удосконалення шляхом домноженняМетод Ферма добре працює коли у числа є множник, близький до квадратного кореня з . Якщо ж відомо приблизне співвідношення між множниками числа , то можна вибрати раціональне число , приблизно рівне цьому співвідношенню. Тоді можна записати таку рівність: , де множники і близькі в силу зроблених припущень. Тому застосувавши метод Ферма для розкладання числа , їх можна досить швидко знайти. Далі для пошуку і можна застосувати рівності і (у разі, якщо не ділиться на і не ділиться на ). У загальному випадку, коли співвідношення між множниками невідоме, можна перебрати різні співвідношення , і спробувати розкласти числа . Алгоритм, заснований на цьому методі, запропонував американський математик Шерман Леман в 1974 році. Алгоритм Лемана детерміновано розкладає на множники задане натуральне число за арифметичних операцій, однак у XXI сторіччі становить тільки історичний інтерес і на практиці майже не застосовується[2]. Метод КрайчикаУзагальнення методу Ферма запропонував Моріс Крайчик в 1926 році. Замість пар чисел які задовольняють співвідношенню , Крайчик запропонував шукати пари чисел, що задовольняють більш загальному порівнянню Таке порівняння можна знайти, перемноживши кілька порівнянь виду , де — невеликі числа, добуток яких буде квадратом. Для цього можна розглянути пари чисел , де — цілий числа трохи більше , а . Крайчик не запропонував конкретного алгоритму пошуку пар та способу їх складання, однак зауважив, що багато з отриманих таким чином чисел розкладаються на невеликі прості множники, тобто числа є гладкими Послідовність дій по Крайчику [3]
ПрикладЗа допомогою методу Крайчика розкладемо число . Число є першим, чий квадрат більший за число : [4]. Визначимо функцію для всіх Ми отримаємо За методом Ферма, потрібно було б продовжувати розрахунок, доки не буде знайдено квадрат якого-небудь числа. За методом Крайчика потрібно знайти кілька таких , добуток яких являє собою квадрат. Якщо і , тоді Деякі з отриманих чисел можна легко факторизувати. Справді: А з отриманого розкладу можна побачити, що добуток цих чотирьох чисел являє собою повний квадрат: Тепер можна обчислити
Оскільки , то за алгоритмом Евкліда обчислюємо найбільшого спільного дільника (1416 - 311) та 2041:
Таким чином, У 1981 році математик Карлтонського університету Джон Діксон опублікував розроблений ним метод факторизації на основі ідеї Крайчика. Алгоритм Діксона заснований на понятті про факторні бази і є узагальненням алгоритму факторизації Ферма. В алгоритмі замість пар чисел, що задовольняють рівнянню шукають пари чисел, що задовольняють більш загальному порівнянню . Обчислювальна складність алгоритму де Подальші вдосконаленняІдея Крайчика лежить в основі найшвидших відомих методів факторизації великих напівпростих чисел — методу квадратичного решета і загального методу решета числового поля. Основна відмінність методу квадратичного решета від методу Ферма полягає в тому, що замість пошуку квадрата в послідовності шукають пари таких чисел, чиї квадрати рівні по модулю (кожна з цих пар може бути розкладанням числа ). Потім вже серед знайдених пар чисел шукають ту пару, яка і є розкладанням числа Розвитком методу факторизації Ферма є метод квадратичних форм Шенкса[джерело?][сумнівно ] (також відомий як SQUFOF), ґрунтований на застосуванні квадратичних форм. Для 32-розрядних комп'ютерів алгоритми, які ґрунтуються на цьому методі, є безумовними лідерами серед алгоритмів факторизації для чисел від до [5]. ЗастосуванняАлгоритм факторизації Ферма можна застосувати для криптоаналізу RSA. Якщо випадкові числа , добуток яких дорівнює , близькі одне до одного, то їх можна знайти методом факторизації Ферма. Після чого можна знайти секретну експоненту , «зламавши» таким чином RSA [6] [7]. На час публікації алгоритму RSA (1977 рік) було відомо небагато алгоритмів факторизації, найвідомішим серед яких був метод Ферма. Цікаві фактиВідомий англійський економіст і логіст У. С. Джевонс зробив у своїй книзі «Принципи науки» («The Principles of Science», 1874 року таке припущення:
Вказане Джевонсом число може бути розкладено вручну методом Ферма приблизно за 10 хвилин[джерело?]. Справді, . За 55 кроків можна дійти до співвідношення:
Таким чином розклад на прості множники має вигляд . Втім, основна думка Джевонса — про складність розкладання чисел на прості множники в порівнянні з їх перемноженням — справедлива, але тільки в тому випадку, коли мова про добуток чисел, що не настільки близькі одне до одного. Примітки
Література
|