求最大公约数java
时间: 2023-11-10 15:59:58 浏览: 81
求最大公约数
最大公约数的求解方法有几种常见的算法,包括暴力枚举、辗转相除法、更相减损法和简化的辗转相除法。这些方法都可以用Java编程语言实现。
1. 暴力枚举法:该方法通过一个循环从两个数的较小值开始递减,寻找能同时整除两个数的最大值。代码如下:
```java
public static int gcd(int a, int b) {
int min = a < b ? a : b;
for (int i = min; i >= 1; i--) {
if (a % i == 0 && b % i == 0)
return i;
}
return 0;
}
```
2. 辗转相除法:该方法是通过递归调用函数来寻找最大公约数,速度比暴力枚举法更快。代码如下:
```java
public static int gcd(int a, int b) {
int max = a > b ? a : b;
int min = a < b ? a : b;
if (max % min == 0)
return min;
return gcd(max % min, min);
}
```
3. 更相减损法:该方法与辗转相除法类似,但使用更高效的减法来代替取余。代码如下:
```java
public static int gcd(int a, int b) {
int max = a > b ? a : b;
int min = a < b ? a : b;
if (max % min == 0)
return min;
return gcd(max - min, min);
}
```
4. 简化的辗转相除法:该方法是对辗转相除法的简化,通过递归调用来求解最大公约数。代码如下:
```java
public static int gcd(int a, int b) {
return (a % b == 0) ? b : gcd(b, a % b);
}
```
阅读全文