如何制作整数的因子生成器?

问题描述 投票:0回答:1

我正在尝试为任何数字制作一个因子生成器,我开始创建一些东西来收集“num”变量的所有数字,并将“num”变量的每个数字添加到另一个向量

numbersOfN
,所以我可以稍后将其除以某些因素以获得可能的因素。

目前我一直在想为什么

numbersOfN.size()
不能正常工作,因为它不断重复,你能告诉我一个替代方案或快速解决这个问题的方法吗?

#include <iostream>
#include <string>
#include <vector>


void getFactors(int num)
{
    int n = num;
    int nofn;
    std::vector<int> factorsOfN(n);
    std::vector<int> numbersOfN(n);
    n = numbersOfN.size();

    for (nofn = 1; nofn <= n; nofn++)
    {
        numbersOfN.push_back(nofn);
        for (int j = 1; j < numbersOfN.size(); j++)
        {
            std::cout << numbersOfN.at(j) << " ";
        }
    }

}

int main()
{
    int num = 32;
    getFactors(num);
}
c++ loops generator factors
1个回答
1
投票

你所追求的更简单的版本:

#include <iostream>
#include <vector>

std::vector<int> getFactors(int num) {
    std::vector<int> factors;

    for (int i = 1; i*i <= num; i++) {
        if ((num % i) == 0) {
            factors.push_back(i);
            int j = num / i;
            if (i != j) {
                factors.push_back(j);
            }
        }           
    }

    return factors;
}

int main() {
    int num = 32;
    std::vector<int> factors = getFactors(num);
    for (int f : factors) {
        std::cout << f << " ";
    }
    std::cout << "\n";
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.