代码:
//最大公约数
public int gcd(int p,int q){
if(q == 0) return p;
return gcd(q, p % q);
} //最小公倍数
public int lcm(int p,int q){
int pq = p * q;
return pq / gcd(p,q);
}
测试:
@Test
public void go(){
int p = 5,q =17;
System.out.println(p+"和"+q+"的最大公约数:"+gcd(p,q));
System.out.println(p+"和"+q+"的最小公倍数:"+lcm(p,q));
}
运行结果:
5和17的最大公约数:1
5和17的最小公倍数:85
原理:
第一个最大公约数使用的2300年前被发明的欧几里得算法求得,大致原理为:
如果有两个非负整数p、q,若q==0,则最大公约数为p;否则,p和q的最大公约数就是p除以q所得的余数和q的最大公约数。
第二个最小公倍数更简单。
公式:最小公倍数=两整数的乘积÷最大公约数
是不是So Easy!