На
другому кроці для кожного один раз
виконується алгоритм знаходження НСД цілих чисел. Двійкова складність алгоритму
знаходження НСД двох
-розрядних чисел дорівнює
Тому
складність другого етапу рівна
На
третьому етапі виконується не більше операцій ділення
-розрядного
числа на
-розрядне
число. Тому складність цього етапу рівна
Теорема
доведена.
Для факторізациі числа слід припустити
,
звідки витікає, що складність знаходження найменшого простого дільника числа
даним алгоритмом
рівна
двійкових
операцій. Якщо припустити
, то алгоритм шукатиме
тільки маленькі прості дільники числа
.
Помітимо, що сучасні методи факторизації на практиці часто виконуються в 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).
Ссылка на скачивание - внизу страницы.