📜  如何在 JavaScript 中计算两个或多个数字/数组的最大公约数?

📅  最后修改于: 2022-05-13 01:56:30.551000             🧑  作者: Mango

如何在 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 是数组的长度。