酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++实现找出正整数n的所有正约数

### 🔍 思路分析 正约数是指能整除给定正整数的正整数。要找出一个数 `n` 的所有正约数,只需从 1 到 `n` 遍历,判断每个数是否能整除 `n`,若能整除,则该数是 `n` 的正约数。 ### 💻 代码实现 ```cpp #include <iostream> #include <vector> // 函数用于找出 n 的所有正约数 std::vector<int> findDivisors(int n) { std::vector<int> divisors; // 遍历从 1 到 n 的所有数 for (int i = 1; i <= n; ++i) { // 判断 i 是否能整除 n if (n % i == 0) { // 若能整除,将 i 加入到约数向量中 divisors.push_back(i); } } return divisors; } int main() { int n; std::cout << "请输入一个正整数 n: "; std::cin >> n; // 调用 findDivisors 函数找出 n 的所有正约数 std::vector<int> result = findDivisors(n); std::cout << n << " 的正约数有: "; for (int divisor : result) { std::cout << divisor << " "; } std::cout << std::endl; return 0; } ``` ### 📝 代码解释 1. **`findDivisors` 函数**:该函数接受一个整数 `n` 作为参数,返回一个存储 `n` 的所有正约数的向量。在函数内部,使用 `for` 循环从 1 到 `n` 遍历,对于每个数 `i`,判断 `n % i` 是否为 0,如果为 0,则将 `i` 加入到向量 `divisors` 中。 2. **`main` 函数**:首先提示用户输入一个正整数 `n`,然后调用 `findDivisors` 函数找出 `n` 的所有正约数,并将结果存储在向量 `result` 中。遍历向量 `result` 并输出所有正约数。 ### ⚙️ 复杂度分析 - **时间复杂度**:$O(n)$,因为需要遍历从 1 到 `n` 的所有数。 - **空间复杂度**:$O(k)$,其中 $k$ 是 `n` 的正约数的个数。 ######[AI问答 | 604点数解答 | 2026-07-22 11:36:07]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]