最大公约数
利用辗转相除法求得
# 两个数的最大公约数
def gcd_2(a,b):
if a < b:
a,b = b,a
if a % b == 0:
return b
else:
return gcd_2(b, a%b)
# 多个数的最大公约数
def gcd_many(list1):
g = list1[0]
for i in range(1, len(list1)):
g = gcd_2(g, list1[i])
return g
def main():
list1 = list(map(int, input().split()))
res = gcd_many(list1)
print(res)
return
main()
最小公倍数
“短除法”,求出最大公约数,在乘上每个数除以最大公约数的值可得最小公倍数
def gcd_2(a,b):
if a < b:
a,b = b,a
if a % b == 0:
return b
else:
return gcd_2(b,a%b)
# 两个数的最小公倍数
def gbs_2(a,b):
gcd = gcd_2(a,b)
gbs = a//gcd * b//gcd * gcd
return gbs
# 多个数的最小公倍数
def gbs_many(list1):
a,b = list1[0],list1[1]
a = gbs_2(a,b)
for i in range(2,len(list1)):
a = gbs_2(a,list1[i])
return a
def main():
list1 = list(map(int,input().split()))
g = gbs_many(list1)
print(g)
return
main()
参考文章
参考文章1