C++求解两个正整数的最小公倍数
### 🔍 思路分析 要求两个正整数 `n` 和 `m` 的最小公倍数,可以先求出它们的最大公约数,然后利用公式 `最小公倍数 = (n * m) / 最大公约数` 来计算。求最大公约数可以使用欧几里得算法(辗转相除法)。 ### 💻 代码实现 ```cpp #include <iostream> using namespace std; // 求最大公约数 int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // 求最小公倍数 int lcm(int n, int m) { return (n * m) / gcd(n, m); } int main() { int n, m; cin >> n >> m; cout << lcm(n, m) << endl; return 0; } ``` ### 📋 代码解释 1. **`gcd` 函数**:使用欧几里得算法(辗转相除法)来计算两个数的最大公约数。 2. **`lcm` 函数**:根据公式 `最小公倍数 = (n * m) / 最大公约数` 计算最小公倍数。 3. **`main` 函数**:读取输入的两个正整数 `n` 和 `m`,调用 `lcm` 函数计算最小公倍数并输出结果。 ### ⚙️ 复杂度分析 - **时间复杂度**:欧几里得算法的时间复杂度为 $O(log(min(n, m)))$。 - **空间复杂度**:只使用了常数级的额外空间,空间复杂度为 $O(1)$。 ### 🚀 开发建议 - **错误处理**:在实际应用中,可以添加输入验证,确保输入的 `n` 和 `m` 是正整数。 - **代码复用**:将 `gcd` 和 `lcm` 函数封装成一个库,方便在其他项目中使用。 - **性能优化**:对于大整数的情况,可以考虑使用更高效的算法来计算最大公约数和最小公倍数。 ### 📚 学习资源 - [C++ 官方文档](https://en.cppreference.com/w/) - 《C++ Primer》 ######[AI写代码神器 | 537点数解答 | 2026-06-12 19:59:22]
- C++ 实现:按顺序存储并输出战力 1 - 10 守卫数量(DeepSeek | 130点数解答 | 2026-01-17 14:11:22)82
- C++实现按战力顺序输出守卫数量(字节豆包 | 185点数解答 | 2026-02-25 22:33:20)55
- C++实现按战力顺序输出守卫数量(字节豆包 | 497点数解答 | 2026-03-20 20:01:06)33
- 小核桃存储守卫战力数量的Python程序实现(字节豆包 | 150点数解答 | 2026-04-03 19:47:58)44
- 使用C++实现存储守卫战力并按顺序输出的程序(字节豆包 | 224点数解答 | 2026-04-12 19:13:22)24
- C++实现按战力顺序输出守卫数量(字节豆包 | 178点数解答 | 2026-05-16 20:40:13)15
- C++实现按战力顺序输出守卫数量的程序及开发建议(字节豆包 | 650点数解答 | 2026-05-16 21:25:38)24
- C++ 实现存储并输出不同战力守卫数量(字节豆包 | 393点数解答 | 2026-05-30 19:39:09)15
- Python 代码优化:实现正整数最大公约数与最小公倍数计算并处理输入错误(讯飞星火 | 457点数解答 | 2024-11-25 18:17:48)409
- Python代码揭秘:巧用辗转相除法求两数最小公倍数(字节豆包 | 468点数解答 | 2025-12-21 07:31:46)52
- Python代码详解:用辗转相除法求两数最小公倍数(字节豆包 | 491点数解答 | 2025-12-21 07:32:42)51
- 使用C++计算多台设备运行周期的最小同步点(字节豆包 | 209点数解答 | 2026-04-25 20:16:29)18