辗转相除法原理讲解

首先介绍一下辗转相除法:
即m 和 n求最大公因数(假设m大于n),先用 m 除以 n ,如果余数 r 为 0 ,则 n 就是最大公因数,否则,将 n 给了 m ,将 r 给了 n ,再用 m 除以 n ,如果余数 r 为 0 ,则n为最大公因数,否则重复执行上述操作,直至 r 为 0 ,此时的 n 就是 m 和 n 的最大公因数。
相信很多人包括我在内都对这个算法不理解,我今天突然有了些想法,分享给大家。
我觉的辗转相除法就是一个分块的思想,为什么这么说呢,我们通过一个例子来说明:
假设 m = 72 ,n = 48
先用 m 除以 n ,如果直接余数 r 为0,那最大公因数自然就是 n 了,这个大家都能理解,问题是72/48余数为24,这时候,我们自然可以将72分块,写成:
72 = 48+24
这个时候,72 和 48 的最大公因数就可以写成:
48+24 和 48
的最大公因数
这下是不是看起来有感觉了?
求最大公因数的中心思想就是找出两个数公有的最大的最大的那一块,那么我们就要对这两个数进行分块,分成一块一块的,其方法就是用大的数除以小的数。
48+24 和 48的最大公因数就是48+24 和 48 的最大公有的那一块,因为左边的 48 和右边的 48 相等,所以再看看从48中能否分出余数 24 那么大的“块”,于是用 48 除以24 分块,此时余数正好为0,分块结束,此时的“块”即是最大的公有“块”,那么次“块”就是最大的公因数。如果余数不为0,说明分块还没完成,需要继续往小了分。
24+24+24 和24+24
上式即是最终的分块结果。
有点啰嗦了,希望能帮到大家!

  • 260
    点赞
  • 380
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

底层开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值