输入一个整数,找到比该数小又能被整除的所有正整数,所有因子相加后等于原来的数 就输出,编写一个c++程序
时间: 2024-02-25 19:58:17 浏览: 20
好的,以下是一个可以实现您要求的 C++ 程序:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> factors;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
factors.push_back(i);
}
}
int sum = 0;
for (int f : factors) {
sum += f;
}
if (sum == n) {
for (int f : factors) {
cout << f << " ";
}
cout << endl;
} else {
cout << "No such numbers." << endl;
}
return 0;
}
```
程序首先读入一个整数 `n`,然后遍历比 `n` 小的所有正整数,找到能被 `n` 整除的所有正整数,并将其存储在向量 `factors` 中。然后遍历 `factors`,将所有因子相加得到 `sum`。最后判断 `sum` 是否等于 `n`,如果等于则输出所有因子,否则输出提示信息。
注意,题目要求输出所有满足条件的正整数,因此有可能会有多组输出。如果您的输入只需要输出一组结果,可以在找到第一个满足条件的正整数时直接输出并退出循环。