Разложение натурального числа на простые множители
Разложение на множители — это нахождение простых сомножителей и их степеней в произведении, дающем исходное натуральное число. Подобное разложение существует и единственно (с точностью до порядка сомножителей) согласно основной теореме арифметики.
Обозначения[править]
pi — i-ое простое число;
n — натуральное число, для которого ищется разложение вида ;
m — количество различных простых множителей в числе n;
jℓ — номер простого числа в основании ℓ-ого множителя;
sℓ — показатель степени ℓ-ого множителя;
k — длина списка простых чисел, поиск которых (в качестве множителя) проводит алгоритм.
Nk = {1; 2; …; k} — множество натуральных чисел, не превосходящих k.
Алгоритм разложения на множители[править]
Ниже приведен простейший алгоритм разложения на множители. Он не является оптимальным и для «больших» чисел неэффективен сравнительно с более быстрыми алгоритмами.
Входные данные: n; k; {p1, p2, … pk}.
- si = 0, ∀i ∈ Nk.
- i = 1; m = 0; d = n.
- Если d не кратно pi, то идти к 7.
- m = m + 1; jm = i.
- d = d / pi; sm = sm + 1.
- Если d кратно pi, то идти к 5.
- i = i + 1.
- Если i ≤ k и d > 1, то идти к 3.
Выходные данные: m; {j1, j2, … jm}; {s1, s2, … sm}.
Алгоритм даёт указанное разложение при наличии во входном списке {pi} всех простых делителей числа n. Если какие-то делители пропущены, то получается разложение вида , где d — натуральное число, не делящееся на простые числа из списка {pi}.