Розклад числа на прості множники
Означення. Розкладом натурального числа n на прості множники (факторизацією числа) називається представлення його у вигляді n = , де pi – взаємно прості числа, ki 1 .
Задача перевірки числа на простоту є простішою за задачу факторизації. Тому перед розкладанням числа на прості множники слід перевірити число на простоту.
Означення. Розбиттям числа називається задача представлення натурального числа n у вигляді n = a * b, де a, b – натуральні числа, більші за 1 (не обов’язково прості).
Метод Ферма
Нехай n – складене число, яке не є степенем простого числа. Метод Ферма намагається знати такі натуральні x та y, що n = x2 – y2. Після чого дільниками числа n будуть a = x – y та b = x + y: n = a * b = (x – y)(x + y).
Якщо припустити що n = a * b, то в якості x та y (таких що n = x2 – y2) можна обрати
,
Приклад. Виберемо n = 143 = 11 * 13.
Тоді x = (13 + 11) / 2 = 12, y = (13 – 11) / 2 = 1.
Перевірка: x2 – y2 = 122 – 11 = 143 = n.
Теорема. Якщо n = x2 – y2, то < x < (n + 1) / 2.
Доведення. З рівності n = x2 – y2 випливає, що n < x2, тобто < x.
Оскільки a = n / b, то . Максимальне значення x досягається при мінімальному b, тобто при b = 1. Звідси x = < .
Отже для пошуку представлення n = x2 – y2 слід перебрати всі можливі значення x із проміжку [ , (n + 1) / 2], перевіряючи при цьому чи є вираз x2 - n повним квадратом.
Приклад. Розкласти на множники n = 391 методом Ферма. = 19.
202 – 391 = 9 = 32. Маємо рівність: 391 = 202 – 32.
Звідси 391 = (20 – 3)(20 + 3) = 17 * 23.
Алгоритм Полард - ро факторизації числа
У 1974 році Джон Полард запропонував алгоритм знаходження нетривіального дільника натурального числа n. Пр цьому алгоритм використовує лише операції додавання, множення та віднімання модулярної арифметики.
Ідея алгоритма Полард – ро полягає в ітеративному обчисленні деякої наперед заданої поліноміальної функції f з цілими коефіцієнтами. Побудуємо послідовність xi наступним чином: x0 оберемо довільним із Zn, а xi+1 = f(xi) mod n, i 0. Оскільки xi можуть приймати лише скінченний набір значень (цілі числа від 0 до n), то існують такі цілі n1 та n2 (n1 < n2), що = . Враховуючи поліноміальність f, для кожного натурального k маємо: = , тобто починаючи з індекса i = n1 послідовність {xi mod n} буде періодичною.
Приклад. Нехай n = 21, x0 = 1, xi+1 = + 3 mod 21.