求最大公约数和最小公倍数的python程序

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

#辗转相除法
def fun1(a,b):
    if a<b:        #如果a<b则将a,b两数调换使大数作为被除数
        a,b = b,a
    t = a%b        #大数除小数得一个余数赋给t
    p = a*b        #将两数的乘积赋给p
    while t!=0:
        a = b       # 当余数不为0时,将b赋给a
        b = t       #将余数赋给b
        t = a%b     #继续将a除以b的余数赋给t
    print( "相除法得最大公约数为:", b )    #当余数为0时,输出b即为最大公约数
    print( "相除法得最小公倍数:", int(p/b) ) #用两数乘积除以最大公约数即为最小公倍数

#相减法
def fun2(a,b):
    p = a*b
    while a!=b :
        if a>b :
            a = a-b        #若a>b,将a-b的值赋给a
        else :
            b = b-a
    print("相减法得最大公约数为:", a)    #当a==b时,输出a即为最大公约数
    print("相减法得最小公倍数为:", int(p/a)) #用两数乘积除以最大公约数即为最小公倍数

#枚举法
def fun3(a,b):
    p = a*b
    t = a   #将a值赋给t
    while t>0 :
        if a%t==0 and b%t==0 : #若a除以t的余数和b除以t的余数都为0时,跳出循环
            break
        t=t-1                   #t>0时,每循环一次,t值减一
    print("枚举法得最大公约数为:", t)         #当跳出循环时,输出t值即为最大公约数
    print("枚举法得最小公倍数为:", int(p / t)) #用两数乘积除以最大公约数即为最小公倍数

#用枚举法求三个正整数的最大公约数和最小公倍数
def fun4(a,b,c):
    p = a*b*c
    if a<b :
        min = a
    else :
        min = b
        if min>c :
            min = c                             #找出输入的a,b,c三个数中的最小的数赋给min
    while min>0 :
        if a%min==0 and b%min==0 and c%min==0 :  #若a除以的余数和b除以min的余数和c除以min都为0时,跳出循环
            break
        min=min-1                               #>0时,每循环一次,min值减一
    print("枚举法得三个数的最大公约数为:", min)  # 当跳出循环时,输出min值即为最大公约数
    print("枚举法得三个数的最小公倍数为:", int(p / min))  # 用两数乘积除以最大公约数即为最小公倍数

#定义一个主函数
def main():
    a = int(input('请输入第一个整数>>'))
    if a>0:                                      #判断输入的数是否为正整数
        b = int(input('请输入第二个整数>>'))
        if b>0:
            fun1(a,b)                           #调用辗转相除法求最大公约数和最小公倍数
            fun2(a,b)                            #调用相减法求最大公约数和最小公倍数
            fun3(a,b)                            #调用枚举法求最大公约数和最小公倍数
        else:
            print('输入错误')
    else :
        print('输入错误')                        #若输入的不是正数,提示输入错误

    c = int(input('请输入第三个整数>>'))
    if c>0 :
        fun4(a,b,c)
    else :
        print('输入错误')

if __name__ == '__main__':
    main()                           #执行主函数

猜你喜欢

转载自blog.csdn.net/baidu_39241254/article/details/82465906