Python 求两个正整数的最大公约数和最小公倍数

最大公约数

a 、 b 的顺序并不影响最终结果,如果 a 、b 是顺序的话,会多一次递归(相当于第一次递归会用来调换大小顺序)。

# 最大公约数    greatest common divisor
# 辗转相除法(递归)
def gcd(a: int, b: int):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

print(gcd(25, 35))
5

最小公倍数

a、b 的最小公倍数 = a、b 的乘积 / a、b 的最大公约数

# 最大公约数
def gcd(a: int, b: int):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

# 最小公倍数    lowest common multiple(以最大公约数的结果为基础)
def lcm(a: int, b: int):
    return int((a * b) / gcd(a, b))
 
 
print(lcm(25, 35))
175

调用拓展

python 的第三方依赖 numpy 也是支持直接求解 最大公约数 和 最小公倍数的:

>>> import numpy as np
>>> np.gcd(25, 35)
5
>>> np.lcm(25, 35)
175

标准库 math 也是支持的(math.lcm 调用需要 python3.9 及以上的版本):

>>> import math
>>> math.gcd(25, 35)
5
>>> math.lcm(25, 35)
175

你可能感兴趣的:(Python,python,最大公约数,最小公倍数)