Java实现求最大公约数和最小公倍数的关键算法(30分)通过键盘输入2个正整数,计算并输出这2个数的最大公约数和最小公倍数。例如,9 和I2的最大公约数是3,最小公倍数是36。
时间: 2024-05-10 20:21:33 浏览: 86
Java求两个正整数的最大公约数和最小公倍数
5星 · 资源好评率100%
1. 求最大公约数
最大公约数可以使用辗转相除法求解。
具体步骤如下:
1. 比较两个数的大小,将较大的数赋值给变量a,较小的数赋值给变量b。
2. 如果b等于0,则最大公约数是a。
3. 否则,计算a除以b的余数,将b赋值给a,将余数赋值给b,重复执行步骤2和步骤3,直到b等于0。
Java代码实现如下:
```java
public static int gcd(int a, int b) {
if (a < b) {
// 如果a小于b,交换a和b的值
int temp = a;
a = b;
b = temp;
}
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
```
2. 求最小公倍数
最小公倍数可以通过最大公约数来求解。
具体步骤如下:
1. 求出两个数的最大公约数。
2. 最小公倍数等于两个数的乘积除以最大公约数。
Java代码实现如下:
```java
public static int lcm(int a, int b) {
int gcd = gcd(a, b);
return a * b / gcd;
}
```
完整代码如下:
```java
import java.util.Scanner;
public class GcdLcm {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个正整数:");
int a = scanner.nextInt();
int b = scanner.nextInt();
int gcd = gcd(a, b);
int lcm = lcm(a, b);
System.out.println(a + "和" + b + "的最大公约数是:" + gcd);
System.out.println(a + "和" + b + "的最小公倍数是:" + lcm);
}
public static int gcd(int a, int b) {
if (a < b) {
// 如果a小于b,交换a和b的值
int temp = a;
a = b;
b = temp;
}
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
public static int lcm(int a, int b) {
int gcd = gcd(a, b);
return a * b / gcd;
}
}
```
阅读全文