编写一个程序,输出2~1000之间的所有完全数。所谓完全数,是指这样的数,该数的各因子(除该数本身外),之和正好等于该数本身
时间: 2024-09-26 14:15:04 浏览: 47
编写一个C++程序来找出2到1000之间的所有完全数,你可以创建一个循环遍历这个范围内的每个数,然后计算它的因子之和。以下是完整的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 函数用于检查一个数是否为完全数
bool isPerfectNumber(int num) {
vector<int> factors;
for (int i = 1; i <= num / 2; ++i) {
if (num % i == 0) {
factors.push_back(i);
}
}
// 计算因子之和并检查是否等于原数
int sum = accumulate(factors.begin(), factors.end(), 0);
return sum == num;
}
int main() {
cout << "2到1000之间的完全数有:" << endl;
for (int i = 2; i <= 1000; ++i) {
if (isPerfectNumber(i)) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
在这个程序中,我们首先定义了一个辅助函数`isPerfectNumber`,它接收一个数字`num`作为参数,查找其因子并将它们存储在一个向量中。然后计算因子之和,并检查是否等于`num`。如果相等,则该数为完全数。
阅读全文