最大公约数

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐