java编写程序,计算2个非零正整数的最大公约数和最小公倍数,要求2个非零正整数从键盘输入。
时间: 2024-09-19 14:14:37 浏览: 44
输入两个正整数m和n,求其最大公因数和最小公倍数
在Java中,我们可以使用欧几里得算法(也称辗转相除法)来计算两个非零正整数的最大公约数(Greatest Common Divisor, GCD),然后利用最大公约数来找到这两个数的最小公倍数(Least Common Multiple, LCM)。以下是步骤:
1. 定义一个函数 `gcd(int a, int b)` 来计算两个数的最大公约数:
```java
public static int gcd(int a, int b) {
if (b == 0) return a;
else return gcd(b, a % b);
}
```
2. 接着定义一个函数 `lcm(int a, int b)` 计算最小公倍数,公式为 `(a * b) / gcd(a, b)`:
```java
public static int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
```
3. 主程序部分,从用户那里获取输入,并检查输入是否是非零正整数:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个非零正整数:");
int num1 = scanner.nextInt();
while (num1 <= 0) {
System.out.println("输入错误,请输入一个正整数:");
num1 = scanner.nextInt();
}
System.out.println("请输入第二个非零正整数:");
int num2 = scanner.nextInt();
while (num2 <= 0) {
System.out.println("输入错误,请输入一个正整数:");
num2 = scanner.nextInt();
}
// 计算并输出结果
int resultGCD = gcd(num1, num2);
int resultLCM = lcm(num1, num2);
System.out.printf("最大公约数(GCD): %d\n", resultGCD);
System.out.printf("最小公倍数(LCM): %d\n", resultLCM);
}
}
```
阅读全文