两种求最大公约数和最小公倍数的方法
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,然后在便利范围结束的时候返回的值就是能同时满足条件的最大值,这个值就是两个数字的最大公约数。