当前位置 : 主页 > 编程语言 > python >

Python教程:两种求最大公约数和最小公倍数的方法

来源:互联网 收集:自由互联 发布时间:2022-06-15
第一种 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,然后在便利范围结束的时候返回的值就是能同时满足条件的最大值,这个值就是两个数字的最大公约数。



网友评论