输入两个正整数m,n,用“碾转相除法”求它们的最大公约数,用Java写
时间: 2024-09-12 20:07:59 浏览: 80
碾转相除法,也称为欧几里得算法,是一种用于计算两个正整数a和b的最大公约数(GCD)的古老算法。基本思想是:两个正整数a和b(假设a > b),它们的最大公约数等于b和a%b(a除以b的余数)的最大公约数。重复这个过程,当余数为0时,最后的除数即为两数的最大公约数。
以下是使用Java实现欧几里得算法的代码示例:
```java
public class GCD {
// 使用递归实现的欧几里得算法求最大公约数
public static int gcd(int m, int n) {
if (n == 0) {
return m;
} else {
return gcd(n, m % n);
}
}
public static void main(String[] args) {
int m = 12;
int n = 18;
int result = gcd(m, n);
System.out.println("最大公约数是:" + result);
}
}
```
在这个代码中,`gcd` 方法是递归调用的,直到第二个参数n变为0,此时第一个参数m就是最大公约数。main 方法中提供了两个输入整数,并调用gcd方法计算它们的最大公约数。
相关问题
输入两个正整数m和n,求其最大公约数和最小公倍数。用java
可以使用辗转相除法求解最大公约数,即不断用较小数去除较大数,直到余数为,此时较大数即为最大公约数。最小公倍数可以通过最大公约数和两数之积的关系求得,即最小公倍数等于两数之积除以最大公约数。
代码示例:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int gcd = getGcd(m, n);
int lcm = m * n / gcd;
System.out.println("最大公约数为:" + gcd);
System.out.println("最小公倍数为:" + lcm);
}
// 辗转相除法求最大公约数
public static int getGcd(int a, int b) {
if (b == ) {
return a;
}
return getGcd(b, a % b);
}
}
```
Java 输入两个正整数m和n,求其最大公约数和最小公倍数
好的,我来为您解答。可以使用辗转相除法来求解最大公约数,使用公式 m * n / 最大公约数 来求解最小公倍数。下面是Java代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个正整数m和n:");
int m = scanner.nextInt();
int n = scanner.nextInt();
int gcd = getGcd(m, n);
int lcm = m * n / gcd;
System.out.println("最大公约数为:" + gcd);
System.out.println("最小公倍数为:" + lcm);
}
// 求最大公约数
private static int getGcd(int m, int n) {
while (m % n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return n;
}
}
```
希望这个答案能够解决您的问题。
阅读全文