酷代码 AI
菜单
服务商

找出所有能表示为两个连续正整数乘积的C++算法实现

```cpp #include <iostream> #include <cmath> using namespace std; int main() { int n; cout << "请输入上限n: "; cin >> n; cout << "小于等于" << n << "的能够表示成两个连续正整数乘积的数有:" << endl; // 遍历可能的第一个因子i,i从1开始 for (int i = 1; i <= sqrt(n) + 1; i++) { int product = i * (i + 1); // 计算连续乘积 if (product <= n) { cout << product << " = " << i << " × " << (i + 1) << endl; } else { break; // 一旦乘积超过n,后续的乘积只会更大,提前结束 } } return 0; } ``` ### 💡 解题思路 - 两个连续正整数可表示为 `i` 和 `i+1`,它们的乘积为 `i * (i+1)` - 由于乘积需要 ≤ n,因此因子 `i` 最大不超过 `sqrt(n)`(因为 `i*(i+1) > i²`,当 `i² > n` 时乘积必然大于 n) - 从 i=1 开始遍历,找到所有满足条件的结果 ### ⚠️ 开发注意要点 - 循环边界:`i ≤ sqrt(n) + 1` 是为了覆盖临界情况,避免遗漏 - 提前终止:当乘积超过 n 时,后续的 i 只会产生更大的乘积,可以直接 break - 数据类型:使用 int 类型时注意 n 的范围,如果 n 较大(超过 46340)建议使用 long long ######[AI问答 | 393点数解答 | 2026-05-22 19:52:36]

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