介绍最大公因数和最小公约数(C++)

最大公因数(GCD)与最小公倍数(LCM)的概念

最大公因数(Greatest Common Divisor,GCD)指两个或多个整数共有的最大正整数因数。最小公倍数(Least Common Multiple,LCM)则是能够被这些整数整除的最小正整数。两者关系为:

\\text{LCM}(a, b) = \\frac{\|a \\times b\|}{\\text{GCD}(a, b)}


C++ 实现方法

欧几里得算法(递归法)计算 GCD

通过递归方式求解,基于数学原理:

\\text{GCD}(a, b) = \\text{GCD}(b, a % b) \] 代码示例: ```cpp int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } ``` ##### 迭代法计算 GCD 避免递归开销的迭代实现: ```cpp int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } ``` ##### 计算 LCM 利用 GCD 结果推导 LCM: ```cpp int lcm(int a, int b) { return abs(a * b) / gcd(a, b); } ``` *** ** * ** *** #### 标准库函数 C++17 起可直接使用 `` 中的 `std::gcd` 和 `std::lcm`: ```cpp #include int gcd_val = std::gcd(a, b); int lcm_val = std::lcm(a, b); ``` *** ** * ** *** #### 注意事项 * 输入为负数时,需转换为绝对值处理或依赖库函数自动处理。 * 大整数运算时需考虑使用 `long long` 类型避免溢出。

相关推荐
ckhcxy2 小时前
抽象类和接口
java·开发语言
Gerardisite2 小时前
私域运营新利器:RPA驱动外部群多模态互动
java·人工智能·python·微信·自动化
宵时待雨2 小时前
优选算法专题3:二分查找
数据结构·c++·算法·leetcode·职场和发展
Byte不洛2 小时前
理解C++异常机制:栈展开、异常传播与异常安全
c++·异常处理·后端开发·编程基础·try catch
我头发多我先学2 小时前
C++ AVL 树:平衡原理到完整实现(自平衡二叉搜索树)
开发语言·数据结构·c++·算法
啊我不会诶2 小时前
2025浙江省赛补题
c++·算法
@小柯555m2 小时前
算法(字母异位词分组)
java·开发语言·算法·leetcode
故事和你912 小时前
洛谷-算法2-1-前缀和、差分与离散化2
开发语言·数据结构·算法·深度优先·动态规划·图论
郝学胜-神的一滴2 小时前
epoll 边缘触发 vs 水平触发:从管道到套接字的深度实战
linux·服务器·开发语言·c++·网络协议·unix