题解 | #求最小公倍数#
求最小公倍数
http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
import java.util.Scanner;
/**
- HJ108 求最小公倍数
- 输入 3 7
- 输出 35
- 方法一、短除法:所有公共除数与所有余数之积,即为最小公倍数。
- 方法二、求最大公约数有两种方法 更相减损法和辗转相处法(即类似短除法) 最小公倍数在求出最大公约数后 两个数相乘除以最大公约数就是最小公倍数
- 方法三、结合方法一和二,先求出a,b最大公约数x,再用a/x 乘上 b/x 即为最小公倍数
- 以下我们用的是更相减损法
- 更相减损法是拿两个数中的较大值减去较小值,然后在减数、被减数、差之间选取两个较小值继续相减,直到减数和被减数相等,得出的数就是最大公约数。
- 例://更相减损术:
- //8 10
- //10 - 8=2
- //8 - 2= 6
- //6-2=4
- //4-2=2
- //2==2于是最大公约数就是2
- /
public class Main {
public static void main(String[] args) {Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int a = sc.nextInt(); int b = sc.nextInt();
// if(a%b==0) System.out.println(a);
// if(b%a==0) System.out.println(b);
Main hj108 = new Main(); int x = hj108.maxYue(a, b);
// 方法二、 int minBei = a*b/x;
// 方法三、
int minBei = a/x * b/x * x;
System.out.println(minBei);
} }
// 最大公约数方法
public int maxYue(int a,int b){
if(a == b) return a;
if(a>b){
int diff = a-b;
return maxYue(b,diff);
}else {
int diff = b-a;
return maxYue(a,diff);
}
}
}