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

C++解决1到n之间数字因数总和计算问题

### 🍃思路分析 要计算 1 到 `n` 之间所有数字的因数总和,我们可以通过两层循环来实现。外层循环遍历 1 到 `n` 的每一个数字,内层循环找出当前数字的所有因数并求和,最后将每个数字的因数和累加起来。 ### 💻代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int totalSum = 0; // 遍历 1 到 n 的每一个数字 for (int i = 1; i <= n; i++) { int factorSum = 0; // 找出当前数字 i 的所有因数并求和 for (int j = 1; j <= i; j++) { if (i % j == 0) { factorSum += j; } } // 将当前数字的因数和累加到总和中 totalSum += factorSum; } cout << totalSum << endl; return 0; } ``` ### 📝代码解释 1. **输入处理**:使用 `cin` 读取输入的整数 `n`。 2. **外层循环**:`for (int i = 1; i <= n; i++)` 遍历 1 到 `n` 的每一个数字。 3. **内层循环**:`for (int j = 1; j <= i; j++)` 找出当前数字 `i` 的所有因数,并将它们累加到 `factorSum` 中。 4. **累加结果**:将每个数字的因数和 `factorSum` 累加到 `totalSum` 中。 5. **输出结果**:使用 `cout` 输出最终的因数总和。 ### 🚀复杂度分析 - **时间复杂度**:$O(n^2)$,因为有两层嵌套循环。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 💡开发建议 - **优化算法**:当前算法的时间复杂度为 $O(n^2)$,对于较大的 `n` 可能会较慢。可以考虑使用更高效的算法,例如利用数学性质来减少不必要的计算。 - **错误处理**:可以添加输入验证,确保输入的 `n` 满足 `n < 100` 的条件。 - **代码可读性**:可以添加注释来提高代码的可读性,特别是对于内层循环的逻辑。 ######[AI写代码神器 | 585点数解答 | 2026-04-25 19:08:18]

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