实现求两个数的最大公约数,并用JAVA语言实现。 要求分别使用辗转相除法和递归方法分别设计
时间: 2024-09-15 07:08:03 浏览: 47
在计算机编程中,求最大公约数(Greatest Common Divisor, GCD)是常见的数学操作,可以使用多种算法实现。这里我会分别介绍辗转相除法(Euclidean Algorithm),也称为欧几里得算法,以及递归方法。
**辗转相除法 (欧几里得算法)**
这种方法基于这样一个事实:对于任意两个整数 a 和 b(a > b),它们的最大公约数等于 a 除以 b 的余数 c 和 b 的最大公约数。当余数为零时,b 就是最小的那个非零余数,也就是 a 和 b 的最大公约数。
以下是Java中使用辗转相除法的实现:
```java
public class Main {
public static int gcd(int num1, int num2) {
while (num2 != 0) {
int temp = num1 % num2;
num1 = num2;
num2 = temp;
}
return num1;
}
// 示例
public static void main(String[] args) {
int a = 48;
int b = 18;
System.out.println("GCD of " + a + " and " + b + " is: " + gcd(a, b));
}
}
```
**递归方法实现**
递归版本的GCD是通过反复将较大的数除以较小的数,直到两数相等为止。这是通过每次计算gcd(b, a%b)得到的。
```java
public class Main {
public static int gcd(int num1, int num2) {
if (num2 == 0)
return num1;
else
return gcd(num2, num1 % num2);
}
// 示例
public static void main(String[] args) {
int a = 48;
int b = 18;
System.out.println("GCD of " + a + " and " + b + " is: " + gcd(a, b));
}
}
```
阅读全文