可以迭代gcd方法以获得更大的一组数字的gcd。
例如:
gCd(a, b, c) = gCd( gCd(a, b), c)
和
gCd(a, b, c, d) = gCd( gCd(a, b, c), d)
那么
gCd(a, b, c, d) = gCd( gCd( gCd(a, b), c), d)
简单、具体的解决方案:
System.out.println("GCD is: " + gCd( gCd(a, b), c) );
然而,如果您注意到,这里正在进行递归
大堆
整数作为输入。它适用于大小为3或任何大小的数组。以下是方法:
/* returns gcd of two numbers: a and b */
public static int gCd(int a, int b) {
if (b == 0) {
return a;
}
return gCd(b, a%b);
}
/* returns gcf of an array of numbers */
public static int gCd(int[] numbers)
{
int result = numbers[0]; // first number
for(int i = 1; i < numbers.length; i++) {
result = gCd(result, numbers[i]); // gcf of itself and next #
}
return result;
}
因此,要将其与代码联系起来:
Scanner userInput = new Scanner(System.in);
System.out.println("Enter first number: ");
int a = userInput.nextInt();
System.out.println("Enter second number: ");
int b = userInput.nextInt();
System.out.println("Enter third number: ");
int c = userInput.nextInt();
// you can do this
System.out.println("GCD is: " + gCd( gCd(a, b), c) );
// or you can do this
int[] numbers = {a, b, c};
int d = gCd(numbers);
System.out.println("GCD is: " + d);
样本输入/输出:
Enter first number:
12
Enter second number:
18
Enter third number:
30
GCD is: 6
GCD is: 6