题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
-
最大公约数和最小公倍数的求法:
-
- 先求最大公约数bigDivisor
-
- 最小公倍数 multiple = input1 * input2 / bigDIvisor
-
最大公约数求法:
-
- 用大的数对小的数求余
-
- 把小的数赋值给大的数,把求余获得的结果赋值给小的数
-
- 循环上一步的操作,直到求余的结果为零
-
- 上一步被求余的数就是我们要的最大公约数
public class 最大公约数和最小公倍数 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int m = in.nextInt();
int n = in.nextInt();
int max = m > n ? m : n; //最大值
int min = m < n ? m : n; //最小值
int index = min; //index代表余数,余数为0结束运算
while (index != 0) {
index = max % min;
max = min;
min = index;
}
System.out.println("最大公约数" + max); //输出的max就是上一步被求余的数,也就是最大公约数
int temp = m * n / max; //temp为最小公倍数
System.out.println("最小公倍数:" + temp);
}
}