题解 | #求最小公倍数#
求最小公倍数
http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
首先通过一个小技巧保证被核心方法处理的参数中a一定是大于b的 接着进行辗转相除,使用递归进行实现,主要的思想是为了如果a和b中都有一个数i,那么i只用出现一次,所以就直接去求a/i,b/i的最大公倍数,并且将结果乘以i,那么最后的结果就是a,b的最大公倍数
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt();
int ans = solution(a, b);
System.out.println(ans);
}
public static int solution(int a, int b){
if(a < b){
return solution(b, a);
}
// 肯定有 a >= b
if(a % b == 0){
return a;
}
for(int i = 2; i < b; i++){
if(a % i == 0 && b % i == 0){
return i * solution(a/i, b/i);
}
}
return a * b;
}
}