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

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]

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