求最大共倍数和最小公约数的数学公式:a%b = mod 。 a和b的最大公约数与 b和mod的最大公约数是相等的。
下面是java下的实现:
public class MathUtil {
/*
* 最大公约数
*/
public static int gcd(int a , int b){
int gcd = 1 ,max ,min,mod;
max = a > b?a:b;
min = a <= b? a :b;
if(max%min == 0)
gcd = min;
else{
do{
mod = max % min;
if(mod == 0)
{
gcd = min;
break;
}
max = min;
min = mod;
}while(true);
}
return gcd;
}
/*
* 最小公倍数
*/
public static int gmd(int a , int b){
int gmd = 1 , x ,y;
int gcd = gcd(a ,b);
x = a / gcd;
y = b / gcd;
gmd = x*y*gcd;
return gmd;
}
public static void main(String[] args) {
System.out.println(gcd(12,20));
System.out.println(gmd(12,20));
}
}