Python 求解最小公倍数

写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站

问题描述:

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

提高要求:

三个以上数的求解。

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

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)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值