学习目标:
用Java计算简单数学问题
例题:
需求:输入2个正整数,求这2个数的最大公约数和最小公倍数
代码如下:
public static void main(String[] args) {
// 输入2个正整数,求最大公约数和最小公倍数
// 最大公约数, 1> 第一步控制台输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个正整数:");
int n = sc.nextInt();
System.out.println("请输入第二个正整数:");
int m = sc.nextInt();
// 2> 最大公约数小于等于最小的那个,取m和n中小的那个数
if(n > 0 && m >0) {
int min = (n < m) ? n : m;
for (int i = min; i >= 1; i--) {
if (n % i == 0 && m % i == 0) {
System.out.println("最大公约数为:" + i);
break;
}
}
// 求最小公倍数,最小公倍数一定大于等于最大的那个数
int max = (n > m) ? n : m;
// 定义一个中间变量,用于存储每次max加倍后的值
int num = max;
// 最小公倍数肯定为max的倍数,最大为:(n*m),最小为:max(n,m)
// 所以定义i为max的倍数,倍数i一定小于等于n和m中小的那个,因为最小公倍数最大为2个数乘积
for (int i = 1; i < n; i++) {
if (num % m == 0 && num % n == 0) {
System.out.println("最小公倍数为:" + num);
break;
} else {
num = max * i;
}
}
} else {
System.out.println("输入数据不合法,请输入正整数!");
}
}
运行效果:
请输入第一个正整数:
6
请输入第二个正整数:
9
最大公约数为:3
最小公倍数为:18
Process finished with exit code 0
总结:
以上就是最大公约数和最小公倍数的求法了。