输入整数n,求出n之内的所有完数
时间: 2024-10-29 16:18:31 浏览: 18
python找出完数的方法
5星 · 资源好评率100%
完数(Perfect Number)是指一个正整数除了本身以外,其所有真因子(即除了自身以外的因数)的和正好等于该数本身的数。例如,6是一个完数,因为它的因数有1, 2, 和3,它们的和恰好为6。
要编写一个程序来找出给定范围内的所有完数,你可以使用以下C++代码:
```cpp
#include <iostream>
#include <vector>
bool isFactor(int num, int factor) {
return num % factor == 0;
}
int sumFactors(int n) {
int sum = 0;
for (int i = 1; i <= n / 2; ++i) {
if (isFactor(n, i)) {
sum += i;
}
}
return sum;
}
void findPerfectNumbers(int limit) {
std::vector<int> perfects;
for (int i = 2; i < limit; ++i) {
if (sumFactors(i) == i) {
perfects.push_back(i);
}
}
if (!perfects.empty()) {
std::cout << "完美数在" << limit << "以内有:";
for (const auto& perfect : perfects) {
std::cout << perfect << " ";
}
std::cout << std::endl;
} else {
std::cout << "在" << limit << "以内没有找到完美数。\n";
}
}
int main() {
int n;
std::cout << "请输入一个整数n:";
std::cin >> n;
findPerfectNumbers(n);
return 0;
}
```
在这个代码中,`isFactor()` 函数用于检查是否一个数是另一个数的因子,`sumFactors()` 函数计算一个数的所有因子之和。`findPerfectNumbers()` 函数遍历从2到`limit`之间的数,如果某个数的因子之和等于该数,则将其添加到`perfects`向量中。最后,在主函数`main()`中获取用户的输入并调用`findPerfectNumbers()`。
运行这个程序后,根据用户输入的`n`值,它会输出指定范围内所有的完数。如果没有找到,它会显示相应的提示信息。
阅读全文