Разложение натурального числа на простые множители
Разложение на множители — это нахождение простых сомножителей и их степеней в произведении, дающем исходное натуральное число. Подобное разложение существует и единственно (с точностью до порядка сомножителей) согласно основной теореме арифметики.
Обозначения[править]
pi — i-ое простое число;
n — натуральное число, для которого ищется разложение вида Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle n = p_{j_1}^{s_1}\cdot p_{j_2}^{s_2}\cdot\ \cdot p_{j_m}^{s_m}} ;
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. Если какие-то делители пропущены, то получается разложение вида Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle n = d\cdot p_{j_1}^{s_1}\cdot p_{j_2}^{s_2}\cdot\ \cdot p_{j_m}^{s_m}} , где d — натуральное число, не делящееся на простые числа из списка {pi}.