我正在尝试为任何数字制作一个因子生成器,我开始创建一些东西来收集“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);
}
你所追求的更简单的版本:
#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;
}