第一种 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 (
第一种
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的值就是最大公约数了,最小公倍数的值通过两个数相乘在除以最大公约数就可以了。
第二种
'''学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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,然后在便利范围结束的时候返回的值就是能同时满足条件的最大值,这个值就是两个数字的最大公约数。