编程序找出N之内的所有完数,并按下面格式输出其因子。C++
时间: 2024-04-30 14:19:52 浏览: 17
以下是 C++ 代码实现,其中使用了两个函数:`isPerfectNumber()` 用于判断一个数是否为完数,`printFactors()` 用于输出一个数的因子。
```c++
#include <iostream>
#include <vector>
using namespace std;
bool isPerfectNumber(int n) {
int sum = 1;
for(int i = 2; i <= n/2; i++) {
if(n % i == 0) {
sum += i;
}
}
return sum == n;
}
void printFactors(int n) {
vector<int> factors;
for(int i = 1; i <= n/2; i++) {
if(n % i == 0) {
factors.push_back(i);
}
}
factors.push_back(n); // n 本身也是因子
cout << n << " = ";
for(int i = 0; i < factors.size(); i++) {
cout << factors[i];
if(i < factors.size()-1) {
cout << " + ";
}
}
cout << endl;
}
int main() {
int N;
cout << "请输入一个正整数 N:";
cin >> N;
cout << "N 之内的完数有:" << endl;
for(int i = 2; i <= N; i++) {
if(isPerfectNumber(i)) {
printFactors(i);
}
}
return 0;
}
```
输出格式如下:
```
请输入一个正整数 N:10000
N 之内的完数有:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
```