最大公约数和最小公倍数--java实现
代码:
//最大公约数 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!