用三种方法求三个正整数的最大公约数和最小公倍数(python3)。

题目:求三个正整数的最大公约数和最小公倍数。

基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。
提高要求:1.三种以上算法解决两个正整数最大公约数问题。
2.求3个正整数的最大公约数和最小公倍数。

#求三个正整数的最大公约数和最小公倍数。
a,b,c=map(int,input("请输入三个数:").split()) #输入需要判断的三个数
#辗转相除法
def fun(x,y):#fun函数:用辗转相除法计算最大公约数
    if x<y:
        x,y=y,x
    d=x%y
    while d>0:
        x,y=y,d
        d=x%y
    return y
x1=int(fun(fun(a,b),c)) #最大公约数
x2=a*b/fun(a,b)
x2=int(c*x2/fun(c,x2))#最小公倍数
print("最大公约数(辗转相除法):",x1)
print("最小公倍数(辗转相除法):",x2)#输出
#相除法
def fun1(x,y):#fun1函数:用相除法计算最大公约数
    while x!=y:
        if x < y:
            x, y = y, x
        x=x-y
    return x
x1=int(fun1(fun1(a,b),c)) #最大公约数
x2=a*b/fun1(a,b)
x2=int(c*x2/fun1(c,x2))#最小公倍数
print("最大公约数(相除法):",x1)
print("最小公倍数(相除法):",x2)#输出
#穷举法
def fun2(x,y):#fun2函数:用穷举法计算最大公约数
    if x<y:
        x,y=y,x
    for z in range(x,0,-1):
        if (x%z==0 and y%z==0):
            break
    return z
x1=int(fun2(fun2(a,b),c)) #最大公约数
x2=int(a*b/fun2(a,b))
x2=int((c*x2/fun2(c,x2)))#最小公倍数
print("最大公约数(穷举法):",x1)
print("最小公倍数(穷举法):",x2)#输出



猜你喜欢

转载自blog.csdn.net/weixin_42594136/article/details/82501349