散文简友广场想法

python刷题009:求最小公倍数,最大公约数(华为机考)

2023-06-24  本文已影响0人  小小一颗卤蛋

描述:正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1≤a,b≤100000
输入描述:输入两个正整数A和B。
输出描述:输出A和B的最小公倍数。

示例1
输入:5 7
输出:35

解题思路1:最小公倍数=两数的乘积/[最大公约数]
补充:最大公约数的找法,较小的那个数可能是最大公约数,我们就从较小的数开始往1遍历(每次用较小的数减去1),找到能同时整除那两个数的即是最大公约数

def lcm(a, b):
    for i in range(min(a,b),0,-1): # 从较小的数开始,遍历到0,步长为-1(每次用较少的数减去1)
        if a % i ==0 and b % i == 0:  # i 为a,b的最大公约数
            return a*b//i  #  最小公倍数=两数的乘积/[最大公约数]

if __name__ == '__main__':
    a,b = map(int,input('').split())
    print(lcm(a,b))

解题思路2:遍历区间:从较大的那个数开始到两个数的乘积

def lcm(a, b):
    for i in range(max(a, b), a * b + 1):
        if i % a == 0 and i % b == 0:  # 能被a,b 同时整除的最小的数
            return i
a,b = map(int,input('').split())
print(lcm(a,b))
上一篇 下一篇

猜你喜欢

热点阅读