两种求最大公约数和最小公倍数的方法

def hu(n1,n2):
    if n1 < n2:
        n1,n2 = n2,n1
    while n2:
        n1,n2 = n2,n1%n2
    return n1

def min(n1,n2):
    if n1 < n2:
        n1,n2 = n2,n1
    x = n1 * n2
    while n2:
        n1,n2 = n2,n1%n2
    return x//n1

a = 5
b = 10

print(hu(a,b))
print(min(a,b))

这是一种较为简便的算法,通过判断两个数字的大小进行置换,置换后进行求模赋值,当n2参数为假时,n1的值就是最大公约数了,最小公倍数的值通过两个数相乘在除以最大公约数就可以了。

 

def hcf(x, y):
    """该函数返回两个数的最大公约数"""

    # 获取最小值
    if x > y:
        smaller = y
    else:
        smaller = x

    for i in range(1, smaller + 1):
        if ((x % i == 0) and (y % i == 0)):
            hcf = i
            print(hcf)

    return hcf


# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print(num1, "", num2, "的最大公约数为", hcf(num1, num2))

这种算法是求最大公约数,判断两个数字的大小,然后遍历1到smaller的数字,通过判断哪个数字能够同时满足两个数字取模都为0,然后在便利范围结束的时候返回的值就是能同时满足条件的最大值,这个值就是两个数字的最大公约数。

posted @ 2018-10-11 09:56  HAPPYEVERYD  阅读(1646)  评论(0编辑  收藏  举报