Java實現輾轉相除法並求取最大公約數、最小公倍數


算法介紹

輾轉相除法, 又名歐幾里德算法(Euclidean algorithm),是求最大公約數的一種方法。

它的具體做法是:

  • 用較大數除以較小數,再用出現的余數(第一余數)去除除數,

  • 再用出現的余數(第二余數)去除第一余數,

  • 如此反復,直到最后余數是0為止。

如果是求兩個數的最大公約數,那么最后的除數就是這兩個數的最大公約數。

算法描述如下:

⒈ 令r為a/b所得余數(0≤r<b)若 r= 0,算法結束;b 即為答案。

⒉ 互換:置 a←b,b←r,並返回第一步。

例如:求 1997 和 615 兩個正整數的最大公約數,是這樣進行的:

1997=3x615+152
615=4x152+7
152=21x7+5
21=1x5+2
5=2x2+1
2=2x1+0

代碼實現如下

public int getHighestConventionNumber(int m,int n){
    //輾轉相除法:求取最大公約數
    if(m < n){
        m= m ^ n;
        n= m ^ n;
        m= m ^ n;
    }
    m % n == 0 ? return n : return getHighestConventionNumber(n, m % n);
    /*if(m % n == 0){
        return n;
    }esls{
        return fun(n, m % n);
    }*/
}

public int getLowestCommonMultiple(int m, int n){
    // 求取最小公倍數:m*n/最大公約數
    return m * n / getHighestConventionNumber(m,n);
}

public static void main(String [] agrs){
    System.out.println(getHighestConventionNumber(3,5));
    System.out.println(getLowestCommonMultiple(3,5));
    System.out.println(getHighestConventionNumber(6,9));
    System.out.println(getLowestCommonMultiple(6,9));
    System.out.println(getHighestConventionNumber(4,8));
    System.out.println(getLowestCommonMultiple(4,8));
}


免責聲明!

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



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