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