如何在 JavaScript 中计算两个或多个数字/数组的最大公约数?
给定两个或多个数字/数字数组,任务是在 JavaScript 中找到给定数字/数组元素的 GCD。
例子:
Input : arr[] = {1, 2, 3}
Output : 1
Input : arr[] = {2, 4, 6, 8}
Output : 2
三个或更多数的 GCD 等于所有数共有的质因数的乘积,但也可以通过重复取数对的 GCD 来计算。
gcd(a, b, c) = gcd(a, gcd(b, c))
= gcd(gcd(a, b), c)
= gcd(gcd(a, c), b)
对于元素数组,我们执行以下操作。如果任何一步的结果变为 1,我们还将检查结果,我们将返回 1 作为 gcd(1, x) = 1。
result = arr[0]
For i = 1 to n-1
result = GCD(result, arr[i])
下面是上述方法的实现。
代码示例:
Javascript
输出:
2
时间复杂度:O(N * log(M)),其中 M 是数组的最小元素,N 是数组的长度。