Python 求解最小公倍数

hresh 540 0

Python 求解最小公倍数

问题描述:

给定两个正整数,求它们的最小公倍数。

提高要求:

三个以上数的求解。

一、两个数的情况下求解最小公倍数

1.穷举法

lcm = min(m,n)
max_num = max(m,n)
for i in range(2,max_num+1):
   if lcm*i % m ==0 and lcm*i % n ==0:
       lcm *= i
       break
 print(lcm)

2.公式 lcm = a*b//gcd(a, b)

def lcm(a,b):
    gcd = lambda a, b: a if b == 0 else gcd(b, a % b)
    return a*b//gcd(a,b)

二、多个数求解

1.穷举法

def get_lcm():
    '''
    求解三个数以上的最小公倍数
    :return:
    '''
    L = [6,5,10,3]
    L = [2, 8, 3, 50]

    lcm = min(L)

    for i in L:
        if lcm % i != 0:
            for j in range(2,i+1):
                if (lcm*j) % i == 0:
                    lcm *= j
                    break
    return lcm

2.公式 lcm = a*b//gcd(a, b)

from functools import reduce

def get_lcm2():
    L = [2, 8, 3, 50]
    def lcm(a,b):
        gcd = lambda a, b: a if b == 0 else gcd(b, a % b)
        return a*b//gcd(a,b)
    return reduce(lcm,L)

发表评论 取消回复
表情 图片 链接 代码

分享