計算最大公約數


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM