请利用STL的动态数组vector,要求在数组中存入完全数的所有因子
时间: 2024-09-13 21:03:25 浏览: 36
STL中的`vector`是一个动态数组容器,它可以存储类型相同的元素,并且能够根据需要自动扩展容量。完全数(Perfect Number)是指一个数恰好等于它的因子(不包括自身)之和。例如,第一个完全数是6,它的因子是1、2、3,而1+2+3=6。
要在`vector`中存入一个完全数的所有因子,你可以按照以下步骤操作:
1. 确定一个完全数,例如28。
2. 从1开始遍历到该完全数,检查每个数是否是该完全数的因子。
3. 如果是因子,则将其添加到`vector`中。
下面是一个简单的C++示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 用于std::sort
// 判断是否为完全数
bool isPerfectNumber(int number) {
int sum = 0;
for (int i = 1; i < number; ++i) {
if (number % i == 0) {
sum += i;
}
}
return sum == number;
}
// 获取完全数的所有因子
std::vector<int> getFactorsOfPerfectNumber(int number) {
std::vector<int> factors;
for (int i = 1; i < number; ++i) {
if (number % i == 0) {
factors.push_back(i);
}
}
return factors;
}
int main() {
int perfectNumber = 28; // 示例:28是一个完全数
if (isPerfectNumber(perfectNumber)) {
std::vector<int> factors = getFactorsOfPerfectNumber(perfectNumber);
std::sort(factors.begin(), factors.end()); // 对因子进行排序
std::cout << "完全数 " << perfectNumber << " 的因子有:";
for (int factor : factors) {
std::cout << factor << " ";
}
std::cout << std::endl;
} else {
std::cout << "输入的数不是完全数" << std::endl;
}
return 0;
}
```
在这个示例中,我们首先定义了一个函数`isPerfectNumber`来判断一个数是否是完全数。然后定义了一个函数`getFactorsOfPerfectNumber`来获取完全数的所有因子,并将它们存储在`vector`中。最后在`main`函数中,我们使用这两个函数来输出一个完全数的所有因子。