C++写一个可以将一个数的因数全部筛出来并记录进一个数组的函数
时间: 2024-11-20 16:37:43 浏览: 22
在C++中,你可以创建一个名为`factorize`的函数,用于寻找并存储一个整数的所有因子。下面是一个简单的实现示例:
```cpp
#include <vector>
#include <cmath>
std::vector<int> factorize(int n) {
std::vector<int> factors;
for (int i = 1; i <= std::sqrt(n); ++i) {
if (n % i == 0) {
// 如果i是因子,那么n/i也是因子(除非n是完全平方数)
factors.push_back(i);
if (i != n / i && n / i != i) { // 防止重复添加因子
factors.push_back(n / i);
}
}
}
return factors;
}
```
这个函数首先创建一个空的`factors`向量来存放结果。然后从1开始迭代到`n`的平方根,因为一个数的因子必定不会超过其平方根。如果当前的`i`能整除`n`,就把它添加到`factors`中,并且如果`i`不是`n`的完全平方根(即`n / i`也不等于`i`),则还会添加`n / i`作为另一个因子。
注意:返回的是所有非重复的因子。如果你想要包含重复的因子(如`4`的因子是`1`, `2`, 和 `4`),只需要移除判断条件`if (i != n / i)`即可。
阅读全文