Napisati program koji određuje sve faktorizacije datog prirodnog broja. Faktorizacija predstavlja razlaganje broja na činioce veće od 1. Činioce u okviru jedne faktorizacije urediti neopadajuće, a same faktorizacije izlistati leksikografski rastuće. U slučaju da je prosleđeni broj prost, ispisati samo njega.
Sa standardnog ulaza se učitava prirodan broj \(n\) (\(2 \leq n \leq 10000\)).
Na standardni izlaz ispisati sve faktorizacije datog broja, uređene po zahtevu zadatka, svaku u svom redu.
24
2 2 2 3 2 2 6 2 3 4 2 12 3 8 4 6
U ovom bloku se opisuje glavno rešenje zadatka.
#include <iostream>
#include <vector>
using namespace std;
void all_factorizations(int n, int start, vector<int>& current, vector<vector<int>>& result)
{
if (n == 1) {
if (current.size() > 1) {
.push_back(current);
result}
return;
}
for (int d = start; d <= n; d++) {
if (n % d == 0) {
.push_back(d);
current(n / d, d, current, result);
all_factorizations.pop_back();
current}
}
}
int main()
{
int n; cin >> n;
<vector<int>> result;
vector<int> current;
vector
(n, 2, current, result);
all_factorizations
if(result.size() > 0) {
for (const auto& factors : result) {
for (int factor : factors) {
<< factor << " ";
cout }
<< endl;
cout }
} else {
<< n << endl;
cout }
return 0;
}