题目
给你两个正整数a和b, 输出它们的最大公约数
辗转相除法
辗转相除法的步骤
def gcd(b,a):
b,a=a,b%a
if a==0:
return b
else:
return gcd(b,a)
即就是取假设b与a不能整除,就取a和b除以a的余数再考察是个递归的思路。
理解
能够从两个角度去理解辗转相除法
1.举例法
一张长方形纸,长2703厘米。宽1113厘米.要把它截成若干个相同大小的正方形,纸张不能有剩余且正方形的边长要尽可能大.问:这样的正方形的边长是多少厘米?
解答:
可知:在长2703厘米、宽1113厘米的长方形纸的一端,依次裁去以宽(1113厘米)为边长的正方形2个。在裁后剩下的长1113厘米。宽477厘米的长方形中,再裁去以宽(477厘米)为边长的正方形2个。
然后又在裁剩下的长方形(长477厘米,宽159厘米)中,以159厘米为边长裁正方形,恰好裁成3个,且无剩余。
因此可知。159厘米是477厘米、1113厘米和2703厘米的约数。
所以裁成相同大的,且边长尽可能长的正方形的边长应是159厘米。所以,159厘米是2703和1113的最大公约数。
让我们把过程转化为计算过程,即:
2703÷1113,商2余477;
1113÷477,商2余159;
477÷159,商3余0。
当余数为0时。最后一个算式