题解 | #求最小公倍数#
求最小公倍数
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); } } }