[NewCoder]最大公约数和最小公倍数
import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m = scan.nextInt(); int n = scan.nextInt(); int max = Math.max(m,n); while(true) { if( (max%m) == 0 && (max%n) == 0) { break; } max = max + 1; } System.out.println(max); } }
greatest common divisor 最大公约数 least common multiple 最小公倍数
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int gcd = gcd(m , n); int lcm = m * n / gcd; System.out.println(lcm); } public static int gcd(int m, int n) { if(m % n == 0) { return n; } return gcd(n, m%n); } }
最大公约数使用欧几里得算法求得,大致原理为:
如果有两个非负整数p、q,若q==0,则最大公约数为p;否则,p和q的最大公约数就是p除以q所得的余数和q的最大公约数。
最小公倍数原理:
公式:最小公倍数=两整数的乘积÷最大公约数