题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
写在前面:最开始直接就按照第一种思路来写,但是总是运行超时,所以就记录一下。
#####有两种思路
假设有A和B两个正整数,那么可以从两个方向考虑:
1、最小公倍数肯定是在max(A,B)和A*B之间。通过遍历该区间的数,找到一个之后,break即可。
缺点:该方法容易运行超时。
代码如下:
try: num1,num2 = map(int,input().split()) except: print("请输入两个正整数!") for i in range(min(num1,num2),num1 * num2+1) : if i % num1 == 0 and i % num2 == 0: print(i) break2、如果A和B两个有一方可以整除另一方,则取max(A,B);如果两者不存在一方整除另一方的情况,则计算两者的最大公约数,也即最小公倍数=A*B/最大公约数;
最大公约数的计算遍历次数较少,不会运行超时。
try: n1,n2 = map(int,input().split()) except: print("请输入两个正整数!") if max(n1,n2) % min(n1,n2) == 0: print(max(n1,n2)) else: n = [i for i in range(1,min(n1,n2)) if n1%i==0 and n2%i==0 ] print(int(n1*n2/max(n)))
如有其他更好的想法,欢迎补充讨论~~~~~