python自学做题记录之最大公约数

题目描述:
给你两个正整数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))

你可能感兴趣的:(python)