/**
* 欧几里德递归算法,大数对小数取余直到小数为0,大数为最大公约数
* @param m
* @param n
* @return
*/
static int maxCommonDivisor_Euclid_Recursion(int m,int n){
if(m<n){
int temp = m;
m = n;
n = temp;
}
if(n == 0)
return m;
else
return maxCommonDivisor_Euclid_Recursion(n,m%n);
}
/**
* 欧几里德非递归算法
* @param m
* @param n
* @return
*/
static int maxCommonDivisor_Euclid_Nonrecursion(int m,int n){
if(m<n){
int temp = m;
m = n;
n = temp;
}
while(n>0){
int temp=m%n;
m=n;
n=temp;
}
return m;
}
/**
* 刘徽两数相减直到两数相等,等数为最大公约数
* @param m
* @param n
* @return
*/
static int maxCommonDivisor_Liuhui(int m,int n){
while(m != n){
if(m>n){
m = m -n;
}else{
n=n-m;
}
}
return m;
}
/**
* 最小公倍数等于最大公约数分别乘以两数对最大公约数的商
* @param m
* @param n
* @return
*/
public static int minCommonMultiple(int m,int n){
int divisor = maxCommonDivisor_Euclid_Recursion(m,n);
int mM = m/divisor;
int nM = n/divisor;
return divisor*mM*nM;
}