Вы можете сделать что-то вроде этого:
#include <iostream>
int main()
{
int n = 36;
int biggestDivisor = n; // in case n is prime number, biggestDivisor is n
for (int i = 1; i < biggestDivisor; i++) {
if (n % i == 0) {
std::cout << i << "*" << n / i << " ";
biggestDivisor = n / i; // done so as to prevent 9 * 4 from getting printed if 4 * 9 is printed
}
}
}
Обратите внимание, что вышеуказанный подход работает для всех n > 1
.
Насколько я понимаю, вы не хотели печатать9 * 4, если уже напечатано 4 * 9.
Если вы хотите напечатать все пары, сделайте следующее:
#include <iostream>
#include <set>
int main()
{
int n = 36;
int biggestDivisor = n;
std::set<std::pair<int, int> > combinationsList;
for (int i = 1; i < biggestDivisor; i++) {
if (n % i == 0) {
combinationsList.insert(std::make_pair(i, n / i));
combinationsList.insert(std::make_pair(n / i, i));
biggestDivisor = n / i;
}
}
for (const auto &ele: combinationsList) {
std::cout << ele.first << "*" << ele.second << " ";
}
}