题解 | #求最小公倍数#

求最小公倍数

https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3

## 首先定义一个求最大公约数的函数gcd(),用的是辗转相除法,写成递归函数,
# 辗转相除法成立的原因是 如果一个数x能够整除两个数a,b, 那么这个数一定能整除a,b间的较大数除以较小数得到的余数y,
如果听不懂,你想一下,两个数总会存在公约数,最小为1,现在以每一份为公约数的量将这两个数等分成若干份,从较大的份数中扣除掉较小的份数的数倍,剩下的若干份每一份仍然是公约数的量,这个剩下的若干份就是余数,它依然是公约数的倍数,然后将较小数作为被除数,将余数作为除数,就这么一直换位置除下去,直到余数为零了,那么这时候的除数就是最大的公约数,就是一开始分数字的时候那个每一份的最大量,没看明白重读一下....
### 然后定义一个求最小公倍数的函数,原理是最小公倍数等于两数乘积除以两数最大公约数
def gcd(x, y):
    if min(x,y) == 0:
        return max(x,y)
    return gcd(min(x,y), max(x,y)%min(x,y))
def lcm(x, y):
    a = gcd(x, y)
    return int(x*y/a)
    
a, b = list(map(int,input().split()))
print(lcm(a, b))


全部评论

相关推荐

点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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