求两个数的最大公约数和最小公倍数(三种解法)与三个数的最大公约数与最小公倍数

#辗转相除法
#最大公约数
def Least_common_multiple(num1,num2):
    if(num1%num2==0):
        return num2
    else:
        return Least_common_multiple(num2,num1%num2)
#最小公倍数
def Greatest_common_divisor(num1,num2,num3,step):
    if(num1%num2==0 and num1%num3==0):
        return num1
    else:
        return Greatest_common_divisor(num1+step,num2,num3,step)



m=input("请选择...\n1.最大公约数\n2.最小公倍数\n")
try:

    if (int(m) == 1):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        if (n2 > n1):
            Result = Least_common_multiple(n2, n1)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        elif (n1 > n2):
            Result = Least_common_multiple(n1, n2)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    elif (int(m) == 2):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        step = Least_common_multiple(n1, n2)
        if (n2 > n1):
            Result = Greatest_common_divisor(n2, n1, n2, step)
            print(str(n1) + "和" + str(n2) + "的小公倍数数为" + str(Result))
        elif (n1 > n2):
            Result = Greatest_common_divisor(n1, n2, n1, step)
            print(str(n1) + "和" + str(n2) + "的最小公倍数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    else:
        print("请选择1或者2选项")
except ValueError:
    print("请选择1或者2选项")

*****************************************************************************************************************************

#穷举法
#最大公约数
def Least_common_multiple(num1,num2):
    count=num2;
    while count>0:
        if(num1%count==0and num2%count==0):
            return count
        else:
            count=count-1

#最小公倍数
def Greatest_common_divisor(num1,num2):
    count=num1;
    while count<=num1*num2:
        if(count%num1==0 and count%num2==0):
            return count
        else:
            count=count+1

m=input("请选择...\n1.最大公约数\n2.最小公倍数\n")
try:
    if (int(m) == 1):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        if (n2 > n1):
            Result = Least_common_multiple(n2, n1)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        elif (n1 > n2):
            Result = Least_common_multiple(n1, n2)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    elif (int(m) == 2):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        step = Least_common_multiple(n1, n2)
        if (n2 > n1):
            Result = Greatest_common_divisor(n2, n1)
            print(str(n1) + "和" + str(n2) + "的小公倍数数为" + str(Result))
        elif (n1 > n2):
            Result = Greatest_common_divisor(n1, n2)
            print(str(n1) + "和" + str(n2) + "的最小公倍数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    else:
        print("请选择1或者2选项")
except ValueError:
    print("请选择1或者2选项")

************************************************************************************************************************************

#相减法
#最大公约数
def Least_common_multiple(num1,num2):
    while num1!=num2:
        if num1 > num2:
            num1 = num1 - num2
            continue
        elif num2 > num1:
            num2 = num2 - num1
            continue
    return num1

#最小公倍数=两数乘积/最大公约数
#最小公倍数
def Greatest_common_divisor(num1,num2):
    return (num1*num2)/Least_common_multiple(num1,num2)

m=input("请选择...\n1.最大公约数\n2.最小公倍数\n")
try:
    if (int(m) == 1):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        if (n2 > n1):
            Result = Least_common_multiple(n2, n1)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        elif (n1 > n2):
            Result = Least_common_multiple(n1, n2)
            print(str(n1) + "和" + str(n2) + "的最大公约数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    elif (int(m) == 2):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        step = Least_common_multiple(n1, n2)
        if (n2 > n1):
            Result = Greatest_common_divisor(n2, n1)
            print(str(n1) + "和" + str(n2) + "的小公倍数数为" + str(Result))
        elif (n1 > n2):
            Result = Greatest_common_divisor(n1, n2)
            print(str(n1) + "和" + str(n2) + "的最小公倍数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    else:
        print("请选择1或者2选项")
except ValueError:
    print("请选择1或者2选项")

***********************************************************************************************************************************

#最大公约数
def Least_common_multiple(num1,num2):
    count=num2;
    while count>0:
        if(num1%count==0and num2%count==0):
            return count
        else:
            count=count-1

#最小公倍数
def Greatest_common_divisor(num1,num2):
    count=num1;
    while count<=num1*num2:
        if(count%num1==0 and count%num2==0):
            return count
        else:
            count=count+1

#三个数的最小公倍数
def Three_Greatest_common_divisor(num1,num2,num3):
    x=Greatest_common_divisor(num1,num2)
    if x>num3:
        Result=Greatest_common_divisor(x,num3)
    else:
        Result=Greatest_common_divisor(num3,x)
    return Result

#三个数的最大公约数
def Three_Least_common_multiple(num1,num2,num3):
    x=Least_common_multiple(num1,num2)
    if(x>num3):
        Result=Least_common_multiple(x,num3)
    else:
        Result=Least_common_multiple(num3,x)
    return Result

m=input("请选择...\n1.最大公约数\n2.最小公倍数\n")
try:

    if (int(m) == 1):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        n3 = int(input("请输入要进行计算的第三个数"))
        if (n2 > n1):
            Result = Three_Least_common_multiple(n2, n1,n3)
            print(str(n1) + "和" + str(n2) +"和"+str(n3)+ "的最大公约数为" + str(Result))
        elif (n1 > n2):
            Result = Three_Least_common_multiple(n1, n2,n3)
            print(str(n1) + "和" + str(n2) +"和"+str(n3)+ "的最大公约数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    elif (int(m) == 2):
        n1 = int(input("请输入要进行计算的第一个数"))
        n2 = int(input("请输入要进行计算的第二个数"))
        n3 = int(input("请输入要进行计算的第三个数"))
        if (n2 > n1):
            Result = Three_Greatest_common_divisor(n2, n1, n3)
            print(str(n1) + "和" + str(n2)+"和"+str(n3) + "的小公倍数数为" + str(Result))
        elif (n1 > n2):
            Result = Three_Greatest_common_divisor(n1, n2, n3)
            print(str(n1) + "和" + str(n2)+"和"+str(n3) + "的最小公倍数为" + str(Result))
        else:
            print("两个计算数相同,结果就是数本身")
    else:
        print("请选择1或者2选项")
except ValueError:
    print("请选择1或者2选项")

猜你喜欢

转载自blog.csdn.net/qq_39621439/article/details/82502015