题解 | #求最小公倍数#

求最小公倍数

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)
        break
2、如果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)))   


如有其他更好的想法,欢迎补充讨论~~~~~


#最小公倍数两数乘积最大公约数defmaxcommondivisorab#
全部评论

相关推荐

瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务