辗转相除法原理讲解
首先介紹一下輾轉相除法:
即m 和 n求最大公因數(假設m大于n),先用 m 除以 n ,如果余數 r 為 0 ,則 n 就是最大公因數,否則,將 n 給了 m ,將 r 給了 n ,再用 m 除以 n ,如果余數 r 為 0 ,則n為最大公因數,否則重復執(zhí)行上述操作,直至 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,說明分塊還沒完成,需要繼續(xù)往小了分。
24+24+24 和24+24
上式即是最終的分塊結果。
有點啰嗦了,希望能幫到大家!
總結
- 上一篇: 微信HOOK之二叉树获取信息 201-1
- 下一篇: 四个球队,单循环比赛,平局每队各得一分,