编写一个函数,确定一个整数是否为完全数(一个数,等于它的真因子之和)。用这个函数确定和打印1到2000之间的所有完全数
时间: 2024-09-13 21:03:37 浏览: 88
Perfect-Numbers:确定一个正整数是否是一个完美数
5星 · 资源好评率100%
以下是一个C++函数,用于判断一个整数是否为完全数,以及一个主程序来找出并打印1到2000之间的所有完全数。
```cpp
#include <iostream>
#include <vector>
// 函数用于判断一个数是否为完全数
bool isPerfectNumber(int num) {
if (num <= 1) return false; // 1和0不是完全数
int sum = 1; // 1总是因子,避免重复
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
sum += i;
if (i != num / i) {
sum += num / i;
}
}
}
return sum == num;
}
int main() {
std::cout << "完全数(1-2000): ";
for (int i = 1; i <= 2000; ++i) {
if (isPerfectNumber(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
return 0;
}
```
这段代码中,`isPerfectNumber` 函数通过检查小于或等于`sqrt(num)`的所有因子来确定一个数是否是完全数。它还避免了重复添加相同的因子,因为对于任何正整数`n`,如果`i`是`n`的一个因子,则`n / i`也是`n`的一个因子。主程序`main`函数调用`isPerfectNumber`来检查每个数,并打印出1到2000之间的所有完全数。
阅读全文