连续整数乘积求解:C++实现与效率优化分析
✅ **问题分析** 题目要求:找出所有 **≤ n** 的正整数,且这些数可以表示为 **两个连续正整数的乘积**,即形式为: ``` k × (k + 1) ``` 其中 `k` 为**正整数**。 例如: - 1 × 2 = 2 - 2 × 3 = 6 - 3 × 4 = 12 - 4 × 5 = 20 - ... 注意:题目要求输出这些**乘积结果**,而不是 `k` 本身。 --- 🚀 **解题思路** 我们只需要枚举 `k` 从 1 开始,计算 `k * (k + 1)`,当结果 **> n** 时停止循环即可。 因为 `n ≤ 10^6`,所以 `k` 最多到大约 `sqrt(10^6) ≈ 1000`,完全可以在 O(√n) 时间内完成,效率非常高。 --- 🛠 **C++ 实现代码** ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; for (int k = 1; ; k++) { long long product = 1LL * k * (k + 1); // 防止溢出 if (product > n) break; // 超出范围,终止 cout << product << endl; // 输出满足条件的数 } return 0; } ``` --- 📌 **关键点说明** | 要点 | 说明 | |------|------| | **循环条件** | 使用 `while(true)` 或 `for(;;)`,当乘积 > n 时 `break` | | **防止溢出** | 使用 `1LL * k * (k+1)` 将乘法转换为 `long long`,避免 `int` 溢出 | | **输出格式** | 每个数占一行,默认从小到大(因为k递增) | | **时间复杂度** | O(√n),n=10^6 时最多约 1000 次循环,非常快 | --- 🧪 **示例测试** 输入: ``` 10 ``` 输出: ``` 2 6 ``` 解释:2 = 1×2,6 = 2×3,12 > 10所以停止。 输入: ``` 30 ``` 输出: ``` 2 6 12 20 30 ``` --- ⚠️ **常见陷阱与优化建议** - **注意数据类型**:`k` 最大约 1000,但乘积可能超过 `int` 最大值(约 21 亿),所以必须用 `long long`。 - **边界情况**:当 `n=1` 时,最小乘积是 2,所以输出为空。 - **不要输出 `k`**:要输出的是 `k*(k+1)` 的结果,而不是 `k` 本身。 --- 💡 **扩展思考** 这个题目本质上是**求 n 以内所有形如 k(k+1) 的数的集合**,可以推广到更一般的**任意两个连续整数乘积**问题。未来若遇到更大 n(比如 10^12),可以采用**二分查找**或**数学公式**优化,但当前范围直接枚举即可。 --- ######[AI写代码神器 | 714点数解答 | 2026-08-28 20:44:51]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)163
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- Python 实现:根据入职年限和销售业绩精准计算职工奖金并列表输出(字节豆包 | 215点数解答 | 2024-11-07 01:01:17)161
- 深入解析洛谷打卡系统:规则揭秘与代码实现(字节豆包 | 316点数解答 | 2025-11-16 19:45:59)203
- 聚焦五方面突出问题,提升工作质效筑牢党建根基 (字节豆包 | 1200点数解答 | 2025-08-18 16:48:50)139
- 破解党建五大突出问题,提升工作落实质效推动全面从严治党纵深发展(字节豆包 | 925点数解答 | 2025-08-18 16:49:44)184
- 聚焦党建五方面问题,强化工作落实质效为复兴梦护航(字节豆包 | 949点数解答 | 2025-08-18 16:49:48)147
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)426
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)439
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)429
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)429
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)444