java 最大公約數gcd

最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。a,b的最大公約數記爲(a,b),同樣的,a,b,c的最大公約數記爲(a,b,c),多個整數的最大公約數也有同樣的記號。求最大公約數有多種方法,常見的有質因數分解法、短除法、輾轉相除法、更相減損法。與最大公約數相對應的概念是最小公倍數,a,b的最小公倍數記爲[a,b]。
該實現方式爲輾轉相除法:

基礎實現方法(遞歸實現)

public int GCD(int a,int b) {
        if(b==0)
            return a;
        else
            return GCD(b,a%b);
    }

快速求解公約數算法:

public int Quick_GCD(int a,int b)
    {
        if(a==0) return b;
        if(b==0) return a;
        if(!(a%2==1)&&!(b%2==1))
        {
            return Quick_GCD(a>>1,b>>1)<<1;
        }
        else if(!(b%2==1))
        {
            return Quick_GCD(a,b>>1);
        }
        else if(!(a%2==1))
        {
            return Quick_GCD(a>>1,b);
        }
        else
        {
            return Quick_GCD(Math.abs(a-b),Math.min(a,b));
        }
    }

基本輾轉相除算法:

public int  GCD_base(int a,int b)
    {
        int r;
        while(b>0)
        {
             r=a%b;
             a=b;
             b=r;
        }
        return a;
    }
發佈了26 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章