c++ 找出n以内的完数
时间: 2024-11-27 09:22:18 浏览: 4
在 C++ 中,找出 n 以内的所有完美数(Perfect Number)可以按照下面的步骤实现:
完美数是指它的所有真因数(除了自身以外的因子)之和等于它自身的数。例如,6 的因数有 1、2 和 3,它们相加得到 6,所以 6 是一个完美数。
以下是使用 C++ 编程找到 n 以内完美数的一个简单方法:
```cpp
#include <iostream>
#include <vector>
bool isDivisor(int num, int divisor) {
return (num % divisor == 0);
}
int sumFactors(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; ++i) {
if (isDivisor(num, i)) {
sum += i;
}
}
// 如果 num 除以自身的商也是因子,则需要额外加上一次 num
if (isDivisor(num, num / i)) {
sum += num / i;
}
return sum;
}
void findPerfectNumbers(int n) {
for (int i = 1; i <= n; ++i) {
if (sumFactors(i) == i) {
std::cout << i << " 是一个完美数.\n";
}
}
}
int main() {
int n;
std::cout << "请输入一个正整数 n: ";
std::cin >> n;
findPerfectNumbers(n);
return 0;
}
```
在这个程序中,`isDivisor` 函数检查一个数是否能被另一个数整除,`sumFactors` 函数计算给定数的所有因子之和,`findPerfectNumbers` 函数则寻找并打印出 n 以内的完美数。
阅读全文