在没有 gcd 算法的情况下找到 lcm-regarding

To find lcm without gcd algorithm-regarding

我试过了,最后我写了一个程序30多个lines.So,我在geeksforgeeks上找解决方案,

def findLCM(a, b): 
    lar = max(a, b) 
    small = min(a, b) 
    i = lar 
    while(1) : 
        if (i % small == 0): 
            return i 
        i += lar 

谁能给我解释一下背后的逻辑'i += lar' 我希望我对这个问题很清楚。由于我是初学者,因此欢迎提出任何相当简单的建议。 谢谢

while(1) : 
    if (i % small == 0): 
        return i 
    i += lar 

这很奇怪 un-pythonic。就这样

while i % small != 0:
   i += lar
return i

i += lar(就此示例而言)等同于 i = i + lar.

如果你问的是算法逻辑,那就想想吧。您正在尝试找到最小公倍数。因此,您首先要检查较小的数字是否能整除较大的数字(换句话说,较大的数字是否已经是最小公倍数)。如果不是,则累加较大数的倍数,直到找到较小数整除的那个数,return它。

顺便说一句,如果我们已经让这段代码更像 pythonic,那么函数名应该是 find_lcm.