最大公约数(最大公因数):指某几个整数共有约数中最大的一个。
求两个整数最大公约数主要的方法:
Java程式代码:
以下使用辗转相除法实现。
1 private int GCD(int a, int b) { 2 if(b==0) return a; 3 return a % b == 0 ? b : GCD(b, a % b); 4 }
最小公倍数,是数论中的一个概念。若有一个数X,可以被另外两个数A、B整除,且X大于(或等于)A和B,则X为A和B的公倍数。A和B的公倍数有无限个,而所有的公倍数中,最小的公倍数就叫做最小公倍数。
Java程式代码:
以下使用辗转相除法求得最大公因数,之后再求最小公倍数。
1 private int GCD(int a, int b) { 2 return a % b == 0 ? b : GCD(b, a % b); 3 } 4 private int LCM(int a, int b) { 5 return a * b / GCD(a, b); 6 }
附:辗转相除法基于如下原理,两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
参考资料:
1.最大公约数.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8
2.辗转相除法.https://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95
3.最小公倍数.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B8