#include <iostream>
#include <vector>
std::vector<std::vector<int>> resultvecofvec;
void genreateFactorCombinations(int start, int factor, int n, std::vector<int>result) {
if (start > n || factor > n)
return;
if (factor == n) {
resultvecofvec.push_back(result);
return;
}
for (int i = start; i < n; i++) {
if (i * factor > n)
break;
if (n % i == 0) {
result.push_back(i);
genreateFactorCombinations(i, i * factor, n, result);
result.pop_back();
}
}
}
void factorsCombinations(int n) {
std::vector<int> result;
genreateFactorCombinations(2, 1, n, result);
}
int main()
{
int n = 24;
factorsCombinations(n);
for (int i = 0; i < resultvecofvec.size(); i++) {
for (int j = 0; j < resultvecofvec[i].size(); j++)
std::cout << resultvecofvec[i][j] << " ";
std::cout << "\n";
}
return 0;
}
/*
run:
2 2 2 3
2 2 6
2 3 4
2 12
3 8
4 6
*/