介绍最大公因数和最小公约数(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 起可直接使用 <numeric> 中的 std::gcd 和 std::lcm:

cpp 复制代码
#include <numeric>
int gcd_val = std::gcd(a, b);
int lcm_val = std::lcm(a, b);

注意事项

  • 输入为负数时,需转换为绝对值处理或依赖库函数自动处理。
  • 大整数运算时需考虑使用 long long 类型避免溢出。
相关推荐
SL_staff9 分钟前
告别规则黑盒:JVS-Rules 在金融风控中的可视化决策编排实践
java·产品·全栈
逃逸线LOF43 分钟前
服务网关Gateway
java·运维·gateway
Funlang1 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人61 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
灿飞屋1 小时前
Kotlin与Java虚拟机四:函数
java·python·kotlin·安卓·android jetpack
坤坤子吖2 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
阡陌数智2 小时前
Claude API新版本重大变更与安全升级指南
java·linux·安全
一晌小贪欢2 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚3 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl