На другому кроці для кожного один раз виконується алгоритм знаходження НСД цілих чисел. Двійкова складність алгоритму знаходження НСД двох -розрядних чисел дорівнює Тому складність другого етапу рівна
На третьому етапі виконується не більше операцій ділення -розрядного числа на -розрядне число. Тому складність цього етапу рівна Теорема доведена.
Для факторізациі числа слід припустити , звідки витікає, що складність знаходження найменшого простого дільника числа даним алгоритмом рівна двійкових операцій. Якщо припустити , то алгоритм шукатиме тільки маленькі прості дільники числа .
Помітимо, що сучасні методи факторизації на практиці часто виконуються в 3 етапи.
Етап 1. Пробні ділення на 1¸2 тисячі перших простих чисел.
Етап 2. Знаходження маленьких простих дільників методом Полларда або Полларда - Штрассена ( у якому число підбирають з міркувань оптимізації загальної трудомісткості алгоритму).
Етап 3. Для знаходження великих простих дільників застосовується один з субекспоненційних алгоритмів.
метод факторизації Полларда.
Припустимо, що - непарне складене число, що не має невеликих простих дільників. Позначимо через найменший простий дільник числа . Наше завдання полягає в його знаходженні. Припустимо, що число розкладається в добуток невеликих простих дільників. Виберемо число , яке є параметром методу. Для успішної роботи алгоритму потрібне, щоб виконувалася умова
де НСК(1,2...,) ( замість можна використовувати або добуток перших простих чисел в деяких ступінях , які вибираються з евристичних міркувань).
Через малу теорему Ферма виконується порівняння
Якщо при цьому
,
то
де Таким чином, - є власним дільником числа кратним
На цій ідеї заснований наступний метод знаходження власного дільника числа . Оскільки число невідомо, то в ньому використаний послідовний перебір малих значень до деякого фіксованого значення.
Хай ціле число, наприклад і невелике ціле з умовою наприклад
Крок 1. Для кожного від 1 до обчислюється і перевіряємо тест кроку 2.
Крок 2. Обчислити Якщо , то знайдений нетривіальний дільник числа . Інакше вважаємо
Наприклад.
Методом Полларда факторізовать число 247.
Хай
Обчислюємо для кожного від 1 до .
;
;
;
т.я. НСД(235-1,247)=13.
Нетривіальний дільник знайдений.
Можна модифікувати алгоритм, використовуючи одночасно декілька різних основ
Оскільки , то Тому як тільки то тобто, і на кроці 2 буде знайдений нетривіальний дільник .
Параметр повинен вибиратися не дуже великим, інакше може бути виконано умову і дільник не буде знайдений.
При виконанні алгоритму зведення в ступінь треба здійснювати в кільці методом повторного зведення в квадрат. Оскільки, то для обчислення потрібно арифметичних операцій кільця . Тому загальна складність алгоритму може бути грубо оцінена величиною
Завдання.
Методом Полларда і -1 Полларда факторізовать числа, вказані в таблиці 1. Оцінити складність обчислень. Варіант брати залежно від номера в журналі.
Варіант (номер в журналі) |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Число (факторизувати методом Полларда) |
143 |
187 |
221 |
247 |
253 |
347 |
323 |
437 |
391 |
77 |
249 |
377 |
Число(факторизувати методом |
437 |
323 |
347 |
253 |
247 |
221 |
187 |
143 |
77 |
527 |
403 |
161 |
Варіант (номер в журнале) |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
Число (факторизвати методом Полларда) |
203 |
133 |
403 |
527 |
203 |
217 |
377 |
391 |
221 |
347 |
249 |
247 |
Число(факторизувати методом |
341 |
403 |
249 |
377 |
143 |
299 |
217 |
77 |
527 |
187 |
323 |
341 |
Таблиця 1.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.