介绍最大公因数和最小公约数(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` 类型避免溢出。

相关推荐
AC赳赳老秦8 分钟前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主15 分钟前
Java基础:list、set、map一遍过
java·开发语言
智者知已应修善业25 分钟前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
灵犀学长1 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
南 阳2 小时前
Python从入门到精通day66
开发语言·python
好家伙VCC2 小时前
【无标题】
java
十八旬2 小时前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude
前进的李工3 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
小碗羊肉3 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医3 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载