题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int a = in.nextInt(); int b = in.nextInt(); // 1.判断能否整除 boolean flag1 = false; int value = 0; if (a % b == 0) { value = a; flag1 = true; } else if (a % b == 0) { value = b; flag1 = true; } if (flag1) { System.out.println(value); return; } // 2.是否进行计算 boolean flag2 = false; int num = 0; if (a > b) { num = b; } else { num = a; } int x = a; int y = b; List<Integer> list = new ArrayList(); for (int i = 2; i <= num; i++) { // 两个数都能整除 // 如果x或者y小于i,那么退出循环 if (x < i || y < i) { break; } while (x % i == 0 && y % i == 0) { flag2 = true; x /= i; y /= i; list.add(i); } } // 结果等于 if (flag2) { value = x * y; for (Integer val : list) { value *= val; } System.out.println(value); return; } // 如果两者都不满足,那么直接相乘 System.out.println(a * b); } }其实就三种情况:
1.a和b其中一个能被另外一个整除,那么找到更大的那个。让它作为最小公倍数;
2.a和b能够进行整除,比如:10和15,他们都能被5整除,结果为2和3。最小公倍数为2*3*5=30
3.前面两者都不满足,直接进行乘法运算,最小公倍数为它们的乘积;