1. 理解LCM与GCD的基础概念
第一次接触LCM(最小公倍数)和GCD(最大公约数)这两个概念是在大学离散数学课上。当时教授用了一个非常生动的例子:假设你有两根长度不同的木棍,GCD就是能同时完整测量这两根木棍的最长尺子,而LCM则是能用这两根木棍拼出来的最短长度。
GCD(Greatest Common Divisor)指的是两个或多个整数共有的最大正整数约数。比如12和18的GCD是6,因为6是能同时整除12和18的最大数。而LCM(Least Common Multiple)则是指能够被这两个数整除的最小的正整数。还是以12和18为例,它们的LCM是36,因为36是12和18的公倍数中最小的一个。
小技巧:记住GCD总是小于或等于两个数中较小的那个,而LCM总是大于或等于两个数中较大的那个。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 计算GCD与LCM的经典算法
2.1 欧几里得算法求GCD
欧几里得算法是计算GCD最经典的方法,基于一个简单的数学原理:gcd(a,b) = gcd(b, a mod b)。这个算法效率极高,时间复杂度是O(log min(a,b))。
python复制def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
实际应用中,我发现当处理大整数时,这个算法比暴力枚举法快几个数量级。有一次我需要计算123456789和987654321的GCD,欧几里得算法几乎瞬间就给出了答案(9),而暴力法可能需要几分钟。
2.2 通过GCD计算LCM
有了GCD后,计算LCM就变得非常简单,因为存在这样的数学关系:lcm(a,b) = |a*b| / gcd(a,b)。这个公式大大简化了LCM的计算。
python复制def lcm(a, b):
return abs(a*b) // gcd(a, b)
注意:这里使用整数除法(//)而不是浮点除法(/),以避免精度问题。我曾经因为忽略这点导致计算结果出现小数,调试了很久才发现问题。
3. LCM与GCD的实际应用场景
3.1 分数运算中的化简与通分
在分数加减法中,GCD用于约分,LCM用于找公分母。比如计算1/6 + 1/4:
1.
