数字快速查找因数C++
时间: 2024-09-22 19:01:14 浏览: 42
数字快速查找因数(也称为质因数分解)是指找出一个给定整数的所有质因子的过程。在C++中,可以采用一种名为“埃拉托斯特尼筛法”(Sieve of Eratosthenes)的算法来简化这个过程,尤其对于较小的数字。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
std::vector<int> primeFactors(int n) {
std::vector<int> factors;
bool isPrime[1001] = {false}; // 初始化一个布尔数组
for (int i = 2; i * i <= n; ++i) {
if (!isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = true; // 将i的倍数标记为非质数
}
}
}
// 查找并添加n的质因子
for (int i = 2; i <= n; ++i) {
if (!isPrime[i] && n % i == 0) {
factors.push_back(i); // 如果能整除,说明i是n的一个质因数
}
}
return factors;
}
int main() {
int number;
std::cout << "Enter a number: ";
std::cin >> number;
std::vector<int> factors = primeFactors(number);
if (factors.empty()) {
std::cout << "Number is a prime." << std::endl;
} else {
std::cout << "Prime factors of " << number << " are: ";
for (int factor : factors) {
std::cout << factor << " ";
}
std::cout << std::endl;
}
return 0;
}
```
在这个代码中,首先创建了一个布尔数组`isPrime`来记录每个数是否为质数。然后使用筛法去除所有小于等于sqrt(n)的合数。最后遍历剩下的数,如果它们能整除输入的`n`,则表示它们是`n`的质因数。
阅读全文