数据的所有组合都是产品的两个整数

Figure all combinations of two integers of a product

本文关键字:两个 整数 组合 数据      更新时间:2023-10-16

示例:两个整数的组合,其产品为36

输出

1*36,2*18,3*12,4*9,6*6等。

我前一段时间在一本书上发现了这个问题,我想不出一种方法。请建议此问题的方法/代码。

您可以做类似的事情:

#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 << " ";
    }
}