Java计算两个非零正整数的最大公约数和最小公倍数,要求两个非零正整数从键盘输入
时间: 2024-09-20 22:03:12 浏览: 55
在Java中,你可以使用欧几里得算法(Euclidean algorithm)来计算两个非零正整数的最大公约数(Greatest Common Divisor, GCD),然后通过最大公约数来求解最小公倍数(Least Common Multiple, LCM)。以下是步骤:
1. **输入两个数**:首先,你需要创建一个简单的控制台程序,提示用户输入两个非零正整数。
```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();
System.out.println("请输入第二个非零正整数:");
int num2 = scanner.nextInt();
// 检查输入是否为非零正整数
if (num1 <= 0 || num2 <= 0) {
System.out.println("输入错误,数字必须是非零正整数!");
return;
}
// 继续计算
}
}
```
2. **计算GCD**:使用欧几里得算法(也称辗转相除法)来找到两个数的最大公约数。
```java
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
```
3. **计算LCM**:最大公约数和最小公倍数之间有公式 `lcm(a, b) = |a * b| / gcd(a, b)`,因此可以在上面的`main`函数中调用这个函数来获取LCM。
```java
// 计算并打印结果
int lcm = Math.abs(num1 * num2) / gcd(num1, num2);
System.out.printf("这两个数的最大公约数是: %d\n", gcd(num1, num2));
System.out.printf("这两个数的最小公倍数是: %d\n", lcm);
```
记得最后关闭`Scanner`对象:
```java
scanner.close();
```
现在,运行程序即可得到两个输入数的最大公约数和最小公倍数。
阅读全文