Разложение числа на простые множители за O(√n)
def factorize(n):
d = 2
p = []
while d * d <= n:
while n % d == 0:
p.append(d)
n //= d
d += 1
if n > 1:
p.append(n)
return p
n = int(input())
print(*factorize(n))
#include <bits/stdc++.h>
using namespace std;
vector<long long> factorize(long long n) {
vector<long long> p;
long long d = 2;
while (d * d <= n) {
while (n % d == 0) {
p.push_back(d);
n /= d;
}
d++;
}
if (n > 1) {
p.push_back(n);
}
return p;
}
int main() {
long long n;
cin >> n;
vector<long long> factors = factorize(n);
for (long long x : factors) {
cout << x << " ";
}
return 0;
}
Факторизация — это разложение числа на произведение простых множителей.
Для n = 84:
Результат: 2, 2, 3, 7 (84 = 2²·3·7)
Временная сложность: O(√n)
Ввод: целое число n (n ≥ 2)
Вывод: простые множители в порядке возрастания
84
Вывод: 2 2 3 7