题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
总是 a >= b
解法1 :暴力解法:一个一个加
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
if(a < b){
int temp = a;
a = b;
b = temp;
}
if(a % b == 0){
System.out.println(a);
}else{
//将num从a+1开始,知道两个数都能整除
int num = a+1;
while(num % a !=0 || num % b != 0){
num++;
}
System.out.println(num);
}
}
}
}
解法2:基础数学
公式:a*b=最大公约数i * 最小公倍数j
先求最大公约数,需要用到一个数学定理: a和b的最大公约数 = b 和 b%a的最大公约数
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
if(a < b){
int temp = a;
a = b;
b = temp;
}
int result = a * b;
//求最大公约数
while(b > 0){
int c = a % b;
a = b;
b = c;
}
//a就是最大公约数
System.out.println(result / a);
}
}
}

