求最大共倍數和最小公約數的數學公式: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));
}
}