编程序找出N之内的所有完数,并按下面格式输出其因子。C++ 输出 ? its factors are ? ? ?
时间: 2023-09-01 12:12:56 浏览: 48
以下是一个 C++ 程序,它找出 N 以内的所有完数,并按照题目要求输出它们的因子:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 计算一个数的因子
vector<int> getFactors(int n) {
vector<int> factors;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
factors.push_back(i);
}
}
return factors;
}
// 判断一个数是否是完数
bool isPerfectNumber(int n) {
vector<int> factors = getFactors(n);
int sum = 0;
for (int i = 0; i < factors.size(); i++) {
sum += factors[i];
}
return sum == n;
}
int main() {
int N;
cout << "Enter N: ";
cin >> N;
cout << "Perfect numbers in [1, " << N << "]:" << endl;
for (int i = 1; i <= N; i++) {
if (isPerfectNumber(i)) {
cout << i << " its factors are ";
vector<int> factors = getFactors(i);
for (int j = 0; j < factors.size(); j++) {
cout << factors[j] << " ";
}
cout << endl;
}
}
return 0;
}
```
该程序使用两个函数,`getFactors` 函数用于计算一个数的因子,`isPerfectNumber` 函数用于判断一个数是否是完数。在 `main` 函数中,程序会输入一个数 N,然后遍历 [1, N] 中的所有数,找出其中的完数,并输出它们的因子。