备战蓝桥杯python——最大公约数、最小公倍数

最大公约数

运用欧几里得算法递归

def gcd(a, b):
    if b==0:
        return a
    return gcd(b, a%b)

最小公倍数

记住公式:a*b//gcd(a, b)

def gbs(a, b):
    return a*b // gcd(a, b)

路径

链接: 路径
备战蓝桥杯python——最大公约数、最小公倍数_第1张图片

def gcd(a, b):
    if b==0:
        return a
    return gcd(b, a%b)

def gbs(a, b):
    return a*b // gcd(a, b)

dp =[float("inf") for _ in range(2022)]
dp[1]=0

for j in range(2, 2022):
    for i in range(max(1, j-21), j):
        dp[j] = min(dp[j], dp[i]+gbs(i, j))


print(dp[2021])

你可能感兴趣的:(蓝桥杯冲刺,python,蓝桥杯,算法,python)