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))