java 辗转相除_Java实现辗转相除法并求取最大公约数、最小公倍数
算法介紹
輾轉(zhuǎn)相除法, 又名歐幾里德算法(Euclidean algorithm),是求最大公約數(shù)的一種方法。
它的具體做法是:
用較大數(shù)除以較小數(shù),再用出現(xiàn)的余數(shù)(第一余數(shù))去除除數(shù),
再用出現(xiàn)的余數(shù)(第二余數(shù))去除第一余數(shù),
如此反復(fù),直到最后余數(shù)是0為止。
如果是求兩個(gè)數(shù)的最大公約數(shù),那么最后的除數(shù)就是這兩個(gè)數(shù)的最大公約數(shù)。
算法描述如下:
⒈ 令r為a/b所得余數(shù)(0≤r
⒉ 互換:置 a←b,b←r,并返回第一步。
例如:求 1997 和 615 兩個(gè)正整數(shù)的最大公約數(shù),是這樣進(jìn)行的:
1997=3x615+152
615=4x152+7
152=21x7+5
21=1x5+2
5=2x2+1
2=2x1+0
代碼實(shí)現(xiàn)如下
public int getHighestConventionNumber(int m,int n){
//輾轉(zhuǎn)相除法:求取最大公約數(shù)
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){
// 求取最小公倍數(shù):m*n/最大公約數(shù)
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));
}
總結(jié)
以上是生活随笔為你收集整理的java 辗转相除_Java实现辗转相除法并求取最大公约数、最小公倍数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: ddk7600驱动开发环境搭建
- 下一篇: 安卓psp模拟器联机教程_让PSP带你回
