python辗转相除法函数_从错误中学python(4)——最小公约数与辗转相除法

题目

给你两个正整数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时。最后一个算式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值