Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

두 개 이상의(또는 배열) 숫자의 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