C++ Program for GCD of more than two (or array) numbers
The GCD of three or more numbers equals the product of the prime factors common to all the numbers, but it can also be calculated by repeatedly taking the GCDs of pairs of numbers.
gcd(a, b, c) = gcd(a, gcd(b, c))
= gcd(gcd(a, b), c)
= gcd(gcd(a, c), b)
CPP
#include <bits/stdc++.h>
using namespace std;
int gcd( int a, int b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
int findGCD( int arr[], int n)
{
int result = arr[0];
for ( int i = 1; i < n; i++)
result = gcd(arr[i], result);
return result;
}
int main()
{
int arr[] = { 2, 4, 6, 8, 16 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << findGCD(arr, n) << endl;
return 0;
}
|
C#
using System;
public class Program {
public static int gcd( int a, int b)
{
if (a == 0)
return b;
return gcd(b % a, a);
}
public static int findGCD( int [] arr, int n)
{
int result = arr[0];
for ( int i = 1; i < n; i++)
result = gcd(arr[i], result);
return result;
}
public static void Main()
{
int [] arr = { 2, 4, 6, 8, 16 };
int n = arr.Length;
Console.WriteLine(findGCD(arr, n));
}
}
|
Time Complexity: O(N * log(N)), where N is the largest element of the array
Auxiliary Space: O(1), ignoring the stack space used in recursion
Implementation of the same code with Iterative GCD Function
C++
#include <bits/stdc++.h>
using namespace std;
int gcd( int a, int b)
{
int result = min(a, b);
while (result > 0) {
if (a % result == 0 && b % result == 0) {
break ;
}
result--;
}
return result;
}
int findGCD( int arr[], int n)
{
int result = arr[0];
for ( int i = 1; i < n; i++)
result = gcd(arr[i], result);
return result;
}
int main()
{
int arr[] = { 2, 4, 6, 8, 16 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << findGCD(arr, n) << endl;
return 0;
}
|
Time Complexity: O(N * log(N)), where N is the largest element of the array
Auxiliary Space: O(1)
Please refer complete article on GCD of more than two (or array) numbers for more details!
Last Updated :
20 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...