一组数的最大公约数和最小公倍数 python

最大公约数
利用辗转相除法求得

# 两个数的最大公约数
def gcd_2(a,b):
    if a < b:
        a,b = b,a
    if a % b == 0:
        return b
    else:
        return gcd_2(b, a%b)
# 多个数的最大公约数
def gcd_many(list1):
    g = list1[0]
    for i in range(1, len(list1)):
        g = gcd_2(g, list1[i])
    return g
def main():
    list1 = list(map(int, input().split()))
    res = gcd_many(list1)
    print(res)
    return
main()

最小公倍数
“短除法”,求出最大公约数,在乘上每个数除以最大公约数的值可得最小公倍数

def gcd_2(a,b):
    if a < b:
        a,b = b,a
    if a % b == 0:
        return b
    else:
        return gcd_2(b,a%b)
# 两个数的最小公倍数
def gbs_2(a,b):
    gcd = gcd_2(a,b)
    gbs = a//gcd * b//gcd * gcd
    return gbs
# 多个数的最小公倍数
def gbs_many(list1):
    a,b = list1[0],list1[1]
    a = gbs_2(a,b)
    for i in range(2,len(list1)):
        a = gbs_2(a,list1[i])
    return a
def main():
    list1 = list(map(int,input().split()))
    g = gbs_many(list1)
    print(g)
    return
main()

参考文章
参考文章1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值