编写一个函数,确定一个整数是否为完全数(一个数,等于他的真因子之和)。用这个函数确定和打印1到2000之间的所有完全数
时间: 2024-09-15 07:13:06 浏览: 75
在C++中,我们可以编写一个名为`isPerfectNumber`的函数,用于检测一个整数是否是完全数。接下来,我们可以遍历1到2000的整数,对于每个数,如果它是完全数,就将其打印出来。以下是实现这个功能的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 计算给定整数的所有因子(包括1和自身)
vector<int> getFactors(int n) {
vector<int> factors;
for (int i = 1; i <= sqrt(n); i++) {
if (n % i == 0) {
factors.push_back(i);
// 如果除数不是1,说明还有另一个因子
if (i != n / i)
factors.push_back(n / i);
}
}
return factors;
}
// 判断一个数是否为完全数
bool isPerfectNumber(int n) {
return (n > 1 && getFactors(n).size() > 1 && n == sum(getFactors(n)));
}
int main() {
for (int i = 1; i <= 2000; i++) {
if (isPerfectNumber(i)) {
cout << i << " 是一个完全数。\n";
}
}
return 0;
}
```
在这个代码中,`getFactors`函数计算了输入整数的因子列表,`isPerfectNumber`函数检查这些因子的和是否等于原数。如果是,则返回true,表明该数是完全数。
阅读全文