请编写一段c++代码,求出给定正整数 s 的所有因子,并按从小到大的顺序输出
时间: 2024-09-11 19:18:08 浏览: 77
以下是一段C++代码,用于求出给定正整数 `s` 的所有因子,并按从小到大的顺序输出:
```cpp
#include <iostream>
#include <vector>
int main() {
int s;
std::cout << "请输入一个正整数: ";
std::cin >> s;
std::vector<int> factors;
// 检查每个小于等于sqrt(s)的数是否是s的因子
for(int i = 1; i * i <= s; ++i) {
if(s % i == 0) {
factors.push_back(i); // i是因子
if(i != s / i) {
factors.push_back(s / i); // s/i也是因子,除非i和s/i相等
}
}
}
// 按从小到大的顺序输出所有因子
std::cout << "正整数 " << s << " 的因子有:" << std::endl;
for(int factor : factors) {
std::cout << factor << " ";
}
std::cout << std::endl;
return 0;
}
```
在这段代码中,我们首先输入一个正整数 `s`,然后创建一个空的 `vector<int>` 类型的数组 `factors` 来存储因子。通过循环,我们从1遍历到 `sqrt(s)`(即 `s` 的平方根),因为一个数的因子不可能大于它的平方根。如果 `i` 能够整除 `s`,那么 `i` 是 `s` 的一个因子,并且 `s/i` 也是 `s` 的一个因子(除非 `i` 和 `s/i` 相同)。最后,我们按照从小到大的顺序输出所有存储在 `factors` 中的因子。
阅读全文