求最小公倍数
正整数A 和 正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A 和B的最小公倍数。 比如输入5和7 ,5和7 的最小公倍数是35,则需要返回35。 输入: 输入两个正整数,如: 5 7 输出: 输出最小公倍数,如: 35 样例输入: 5 7 样例输出: 35
参考解答
m,n的最大公约数 * m,n的最小公倍数 = m * n
而最大公约数的一种解法为: 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 算法描述:
记被除数为m,除数为n,余数为r;
每次运算将上一次的n作为这次的m,上一次的r作为这一次的n;
直到除尽为止,最后一次的n即为解。
例如,求(319,377):
319÷377 余319
377÷319 余58
319÷58 余29
58÷29 余0
解为29
java代码:
public static void main(String[] args) {
System.out.println(gcd(5, 7));
System.out.println(lcm(5, 7));
}
// 最小公倍数
public static int lcm(int m, int n) {
return m * n / gcd(m, n);
}
// 最大公约数
public static int gcd(int m, int n) {
if (m % n == 0) {
return n;
}
return gcd(n, m % n);
}