java给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20
时间: 2024-02-13 20:03:04 浏览: 76
可以使用辗转相除法(也称欧几里得算法)来求解最大公约数,具体实现如下:
```java
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
```
在此方法中,如果b为0,则a是最大公约数,否则将b与a mod b的结果递归传递给函数gcd。使用该方法,可以在O(log n)的时间复杂度内计算出最大公约数。
相关问题
给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20
可以使用辗转相除法(也称欧几里得算法)来求解最大公约数,具体实现如下:
```java
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
```
在此方法中,如果b为0,则a是最大公约数,否则将b与a mod b的结果递归传递给函数gcd。使用该方法,可以在O(log n)的时间复杂度内计算出最大公约数。
java给定2个正整数,求它们的最大公约数和最小公倍数,并输出。 输入格式: 输入有若干组。 每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。 输出格式: 对于每组输入,在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1个空格分隔。
在Java中,你可以使用欧几里得算法(也叫辗转相除法)来计算两个正整数的最大公约数(GCD),然后根据最大公约数和其中一个数求最小公倍数(LCM)。以下是简单的步骤:
首先,编写一个计算GCD的函数:
```java
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
接下来,计算LCM,可以用公式 LCM(a, b) = |a * b| / GCD(a, b) 来实现:
```java
public static int lcm(int a, int b) {
return a * (b / gcd(a, b));
}
```
最后,主程序部分接受用户输入并输出结果:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int M = scanner.nextInt();
int N = scanner.nextInt();
int gcdResult = gcd(M, N);
int lcmResult = lcm(M, N);
System.out.println(gcdResult + " " + lcmResult);
}
scanner.close();
}
}
```
当你运行这个程序,它会读取输入的两个正整数,计算它们的最大公约数和最小公倍数,然后按照指定的格式输出结果。
阅读全文