求三个数的最大公约数和最小公倍数

求三个数的最大公约数和最小公倍数

如题:求三个数的最大公约数和最小公倍数

代码块

这次试用一下python,不过没太关心鲁棒性

@sherry
#枚举法求最小公倍数
def decmax(a,b,c):
    i=1;
    while(1):
        #f为三个数中最大数的整数倍
        #死循环直到找到除以三个数均为0的数的通过break 跳出循环
        f=max(a,b,c)*i
        if((f%a==0 and f%b==0) and f%c==0):
            break
        i=i+1
    return f
#辗转相除法求最大公约数
def gcd(a,b):
     r=a%b
     if(r==0):#当a%b=0时b为最大公约数
         return b
     else:#否则gcd(a,b)=gcd(b,a%b)
         return (gcd(b,r))
def gcd_3(a,b,c):
    return gcd(gcd(a,b),c)
#利用求大公约数求最小公倍数
def maxG(a,b,c):
    return a*c*b*gcd_3(a,b,c)//(gcd(a,b)*gcd(a,c)*gcd(b,c))  
#更相减损法求最大公约数
def sub(a,b):
    while(a!=b):
        if(a>b):#如果a>b
            a=a-b#a=a-b
        else:#否则
            b=b-a#b=b-a
    return a#当a=b时返回a即为最大公约数
def sub_3(a,b,c):
    return sub(sub(a,b),c) #嵌套求取三个数的最大公约数
def f(a,b):
    return a*b//gcd(a,b)#求两个数的最小公倍数
def F(a,b,c):
    return f(f(a,b),c)#先求a,b的最小公倍数,与c求最小公倍数
s=input("请输入三个整数: 例如a,b,c")
a,b,c=s.split(',')
a=int(a)
b=int(b)
c=int(c)
if(a==0 and b==0 and c==0):
    print("最大公约数为0")
    print('最小公倍数为0')
else:
    print('枚举法求得最大公约数:'+str(decmin(a,b,c)))
    print('辗转相除法求得最大公约数:'+str(gcd_3(a,b,c)))
    print('更相减损法求的最大公约数:'+str(sub_3(a,b,c)))
    print('枚举法求得最小公倍数'+str(decmax(a,b,c)))
    print('通过最大公约数求得三个数的最小公倍数:'+str(maxG(a,b,c)))
    print('通过就嵌套求三个的最小公倍数'+str(F(a,b,c)))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值