c++求一个数n的质因子(函数)
时间: 2024-09-07 20:05:35 浏览: 89
质因子分解
在C++中编写一个函数来求一个数n的质因子,可以通过不断对n进行除以最小质数的试验,直到n变成1为止。下面是这样一个函数的示例代码:
```cpp
#include <iostream>
#include <vector>
std::vector<int> getPrimeFactors(int n) {
std::vector<int> factors;
// 先除以2,直到n是奇数
while (n % 2 == 0) {
factors.push_back(2);
n = n / 2;
}
// n此时为奇数,从3开始尝试除以奇数,直到sqrt(n)
for (int i = 3; i <= sqrt(n); i = i + 2) {
while (n % i == 0) {
factors.push_back(i);
n = n / i;
}
}
// 如果n此时大于2,则n一定是质数
if (n > 2) {
factors.push_back(n);
}
return factors;
}
int main() {
int number;
std::cout << "请输入一个整数:";
std::cin >> number;
std::vector<int> primeFactors = getPrimeFactors(number);
std::cout << "数 " << number << " 的质因子有:";
for (int factor : primeFactors) {
std::cout << factor << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码定义了一个名为`getPrimeFactors`的函数,它接受一个整数`n`作为参数,并返回一个包含`n`的所有质因子的`vector<int>`。函数首先处理了2的情况,因为2是唯一的偶数质数。然后,它通过从3开始的奇数进行测试,直到`sqrt(n)`,因为任何大于`sqrt(n)`的质因子乘积会小于`n`,所以不需要检查。如果在循环结束后`n`大于2,则`n`本身是一个质数,将其添加到质因子列表中。
阅读全文