📅  最后修改于: 2023-12-03 15:02:05.954000             🧑  作者: Mango
本文介绍了如何使用Java编写一个程序,在给定的索引范围内查找数组中的最大公约数(GCD)。
给定一个包含正整数的数组arr和两个索引left和right。要求在arr的子数组arr[left...right]中查找最大公约数。
我们可以使用欧几里得算法来计算两个整数的最大公约数。这个算法基于如下原则:
下面是一个实现查找最大公约数的Java代码片段。代码片段中包含了一个findGCD
方法,该方法接收一个整型数组arr
、左索引left
和右索引right
作为输入,并返回该范围内的最大公约数。
public class GCD {
public static int findGCD(int[] arr, int left, int right) {
if (left > right || left < 0 || right >= arr.length) {
throw new IllegalArgumentException("Invalid index range");
}
int result = arr[left];
for (int i = left + 1; i <= right; i++) {
result = gcd(result, arr[i]);
}
return result;
}
private static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
现在,我们来看一个用例,展示如何使用上述代码片段查找数组中给定索引范围内的最大公约数。
public class Main {
public static void main(String[] args) {
int[] arr = {12, 24, 36, 48, 60};
int left = 1;
int right = 3;
int gcd = GCD.findGCD(arr, left, right);
System.out.println("The GCD in the range [" + left + ", " + right + "] is: " + gcd);
}
}
输出结果:
The GCD in the range [1, 3] is: 12
本文介绍了如何使用Java编写一个程序,在给定的索引范围内查找数组中的最大公约数。通过使用欧几里得算法,我们能够高效地计算最大公约数。希望本文能帮助到你!