使用C++找出1000以内的完全数
时间: 2024-11-29 18:10:21 浏览: 9
在C++中,一个完全数是指它的所有真因数(除了自身以外的正因子)之和等于它本身的数。以下是查找1000以内完全数的一个简单程序:
```cpp
#include <iostream>
#include <vector>
bool isPerfect(int num) {
int sum = 1; // 自然数从1开始
for (int i = 2; i * i <= num; ++i) { // 遍历到num的平方根,避免重复计算
if (num % i == 0) { // 如果num能被i整除
sum += i;
if (i != num / i) { // 如果不是本身,则加上另一个因数
sum += num / i;
}
}
}
return sum == num; // 返回sum是否等于num,如果相等则是完全数
}
int findPerfectNumbers(int limit) {
std::vector<int> perfects;
for (int i = 2; i <= limit; ++i) {
if (isPerfect(i)) {
perfects.push_back(i);
}
}
return perfects;
}
int main() {
int max_limit = 1000;
std::vector<int> perfect_numbers = findPerfectNumbers(max_limit);
std::cout << "1000以内的完全数有:" << std::endl;
for (int number : perfect_numbers) {
std::cout << number << " ";
}
阅读全文