超过两个(或数组)数字的GCD 0.的C ++程序?

在这里,我们将看到如何获取两个以上的数字的gcd。查找两个数字的gcd很容易。当我们要查找两个以上的gcd时,必须遵循gcd的关联性规则。例如,如果我们要查找{w,x,y,z}的gcd,则它将为{gcd(w,x),y,z},然后是{gcd(gcd(w,x),y) ,z},最后是{gcd(gcd(gcd(w,x),y),z)}。使用数组可以很容易地完成。

算法

gcd(a,b)

begin
   if a is 0, then
      return b
   end if
   return gcd(b mod a, a)
end

getArrayGcd(arr,n)

begin
   res := arr[0]
   for i in range 1 to n-1, do
      res := gcd(arr[i], res)
   done
   return res;
end

示例

#include<iostream>
using namespace std;
int gcd(int a, int b) {
   if (a == 0)
      return b;
   return gcd(b%a, a);
}
int getArrayGcd(int arr[], int n) {
   int res = arr[0];
   for(int i = 1; i < n; i++) {
      res = gcd(arr[i], res);
   }
   return res;
}
main() {
   int arr[] = {4, 8, 16, 24};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "GCD of array elements: " << getArrayGcd(arr, n);
}

输出结果

GCD of array elements: 4