该示例将通过 Python3 计算一个数的最大公约数与最小公倍数。
(1) 最大公约数(GCD)
最大公约数是指几个数共有的因数里,最大的那一个。用来约分、化简分数、分组、分配东西。例如:
12 的因数:1, 2, 3, 4, 6, 12
18 的因数:1, 2, 3, 6, 9, 18
公因数:1, 2, 3, 6
最大公约数 = 6
(2)最小公倍数(LCM)
最小公倍数是指几个数共有的倍数里,最小的那一个(大于 0)。用来通分、算同时相遇、重复周期问题。例如:
12 的倍数:12, 24, 36, 48…
18 的倍数:18, 36, 54…
公倍数:36, 72…
最小公倍数 = 36
注意:
对任意两个正整数 a、b:
a×b = 最大公约数×最小公倍数
比如 12×18 = 216,6×36=216,相等。
示例代码:
def gcd(a, b):
# 辗转相除法求最大公约数
while b:
a, b = b, a % b
return a
def lcm(a, b):
# 最小公倍数 = 两数乘积 // 最大公约数
return a * b // gcd(a, b)
# 测试
if __name__ == '__main__':
x = 12
y = 18
print(f"数字1:{x}")
print(f"数字2:{y}")
print(f"最大公约数(GCD):{gcd(x, y)}")
print(f"最小公倍数(LCM):{lcm(x, y)}")运行结果:
数字1:12
数字2:18
最大公约数(GCD):6
最小公倍数(LCM):36示例代码:
import math
def lcm(a, b):
return a * b // math.gcd(a, b)
if __name__ == '__main__':
x = 12
y = 18
print(f"数字1:{x}")
print(f"数字2:{y}")
print(f"最大公约数(GCD):{math.gcd(x, y)}")
print(f"最小公倍数(LCM):{lcm(x, y)}")运行结果:
数字1:12
数字2:18
最大公约数(GCD):6
最小公倍数(LCM):36