用c++编写一个函数,确定一个整数是否为完全数(一个数,等于他的真因子之和)。 用这个函数确定和打印1到2000之间的所有完全数。
时间: 2024-09-14 10:12:52 浏览: 79
在 C++ 中,我们可以编写一个函数 `isPerfectNumber` 来检查一个整数是否为完全数,然后遍历并打印出1到2000之间的所有完全数。这里是一个简单的实现:
```cpp
#include <iostream>
#include <vector>
bool isPerfectNumber(int n) {
if (n <= 1) return false;
int sum = 1; // 包含1作为默认项
for (int i = 2; i * i <= n; i++) { // 遍历到 sqrt(n)
if (n % i == 0) {
if (i != n / i) { // 如果不是平方根,则有两个因子
sum += i;
sum += n / i;
} else {
sum += i; // 只有一个因子,即本身
}
}
}
return sum == n && n != 6; // 完全数排除 6 这个特例
}
void printPerfectNumbers(int limit) {
std::cout << "Perfect numbers between 1 and " << limit << " are:\n";
for (int i = 1; i <= limit; ++i) {
if (isPerfectNumber(i)) {
std::cout << i << "\n";
}
}
}
int main() {
int maxLimit = 2000;
printPerfectNumbers(maxLimit);
return 0;
}
```
在这个代码中,`isPerfectNumber` 函数检查输入数字是否是完全数,而 `printPerfectNumbers` 函数则遍历1到给定限制,并调用 `isPerfectNumber` 检查每个数。在主函数 `main` 中,我们设置了最大限制为2000。
阅读全文