最大公因数(GCD)
最大公因数是指两个或多个整数共有约数中最大的一个。在Python中,计算最大公因数可以使用math模块中的gcd函数(Python 3.5+)。对于更早版本或自定义实现,可以使用欧几里得算法。
使用math.gcd函数:
python
import math
a = 48
b = 18
gcd = math.gcd(a, b)
print(gcd) # 输出:6
欧几里得算法实现:
python
def gcd(a, b):
while b:
a, b = b, a % b
return a
print(gcd(48, 18)) # 输出:6
最小公倍数(LCM)
最小公倍数是指两个或多个整数公有的倍数中最小的一个。计算最小公倍数通常基于最大公因数,利用公式: [ \text{LCM}(a, b) = \frac{|a \times b|}{\text{GCD}(a, b)} ]
使用math.lcm函数(Python 3.9+):
python
import math
a = 12
b = 15
lcm = math.lcm(a, b)
print(lcm) # 输出:60
自定义实现:
python
def lcm(a, b):
return abs(a * b) // gcd(a, b) if a and b else 0
print(lcm(12, 15)) # 输出:60
多个数的GCD和LCM
对于多个数,可以迭代计算。例如,计算列表[12, 15, 18]的GCD和LCM:
多个数的GCD:
python
from functools import reduce
import math
numbers = [12, 15, 18]
gcd_result = reduce(math.gcd, numbers)
print(gcd_result) # 输出:3
多个数的LCM:
python
def lcm_multiple(*args):
return reduce(lambda x, y: x * y // math.gcd(x, y), args)
print(lcm_multiple(12, 15, 18)) # 输出:180