Open In App

# std::gcd | C++ inbuilt function for finding GCD

In many competitive programming problems, we need to find greatest common divisor also known as gcd. Euclids algorithm to find gcd has been discussed here.
C++ has the built-in function for calculating GCD. This function is present in header file.
Syntax for C++14 :

``` Library: 'algorithm'
__gcd(m, n)
Parameter :  m, n
Return Value :  0 if both m and n are zero,
else gcd of m and n.```

Syntax for C++17 :

```Library: 'numeric'
gcd(m, n)
Parameter :  m, n
Return Value :  0 if both m and n are zero,
else gcd of m and n.```

## CPP

 `// CPP program to illustrate``// gcd function of C++ STL``#include ``#include ``// #include for C++17` `using` `namespace` `std;` `int` `main()``{``    ``cout << ``"gcd(6, 20) = "` `<< __gcd(6, 20) << endl; ``// gcd(6,20) for C++17``}`

Output

`gcd(6, 20) = 2`

Time Complexity: O(logn)
Auxiliary Space: O(1)

Program to Find the gcd of all numbers in a vector.

## C++

 `#include``#include ``#include ``using` `namespace` `std;``int` `main()``{``    ``vector<``int``> numbers = { 12, 15, 18, 21, 24 };``    ``int` `ans =__gcd(numbers, numbers);``    ``for` `(``int` `i = 2; i < numbers.size(); i++)``    ``{``        ``ans = __gcd(ans, numbers[i]);``    ``}``    ``cout << ``"The GCD of the numbers in the vector is: "` `<

Output

```The GCD of the numbers in the vector is: 3
```

Time Complexity: O(k*logn)
Auxiliary Space: O(k)

Note: If either M or N is not an integer type, or if either is (possibly cv-qualified) bool, the program is ill-formed. Also, If either |m| or |n| is not representable as a value of type std::common_type_t, the behavior is undefined.

## CPP

 `// CPP program to illustrate``// undefined behavior of``// gcd function of C++ STL``#include ``#include ``// #include for C++17` `using` `namespace` `std;` `int` `main()``{``    ``cout << ``"gcd(2.0, 8) = "` `<< __gcd(2.0, 8) << endl; ``// gcd(2.0,8) for C++17``}`

```Output:
Error, As the data type float is not supported by std::gcd.```

This article is contributed by Pratik Chhajer. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.