Greatest Common Divisor(GCD)
1、輾轉相除法:
歐幾里得算法據說是最早的算法,用於計算最大公約數,也是數論的基礎算法之一。又被稱之為輾轉相除法。
| 具體做法: 1.用較小數除較大數, 2.再用出現的余數(第一余數)(變成這一輪的除數)去除除數(變成這一輪的被除數) 3.再用出現的余數(第二余數)(變成這一輪的除數)去除第一余數(變成這一輪的被除數) 4.如此反復 5.直到最后余數是0為止。 |

//迭代法(遞推法):歐幾里得算法:計算分子分母的最大公約數 public long getGcd(long a, long b) { while (a % b != 0) { long temp = a % b; a = b; b = temp; } return b; } //或許你會看到這個版本的代碼,效果相同 public long getGcd(long a, long b) { while ( b > 0) { long temp = a % b; a = b; b = temp; } return a; }
2、更相減損術:
https://www.cnblogs.com/laizhenghong2012/p/8457784.html
更相減損術出自《九章算術》,其原理很簡單:兩個正整數a和b(a > b),它們的最大公約數等於a-b的差值c和較小數b的最大公約數。依次遞歸下去,直到兩個數相等。這相等兩個數的值就是所求最大公約數。
long GetGCD(long a, long b) { if (a == b) return a; else if (a > b) return GetGCD(a-b, b); else return GetGCD(b-a, a); }
【轉載自】
https://blog.csdn.net/qunqunstyle99/article/details/84033996
