题目描述:
给你两个正整数a和b, 输出它们的最大公约数。
例如:a = 3, b = 5
则输出:1
下列代码仅供参考思路,因为这里a,b并没有赋值
def solve_it():
for i in range(max(a,b),0,-1):
if a%i==0 and b%i==0:
return i
break
print(solve_it())
这里还有一种比较难懂的方法:欧几里得算法----辗转相除法
用辗转相除法求最大公约数的算法如下:
两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。
所以我们可以直接贴代码了
def maxyue(a, b):
a,b=max(a,b),min(a,b)
while(b!=0):
temp = a % b
a = b
b = temp
return a
print(maxyue(a,b))
然后刷题又遇到一个函数math函数中的gcd函数,代码见下,简单粗暴
from math import gcd
print(gcd(a,b))