# Maximum GCD of two numbers possible by adding same value to them

Given two numbers **A** and **B**, the task is to find the maximum **Greatest Common Divisors(GCD)** that can be obtained by adding a number **X** to both **A** and **B**.

**Examples**

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

Input:A = 1, B = 5Output:4Explanation:Adding X = 15, the obtained numbers are A = 16 and B = 20. Therefore, GCD of A, B is 4.

Input:A = 2, B = 23Output:21

**Approach: **This problem can be solved in a very optimized manner using the properties of Euclidean GCD algorithm. Follow the steps below to solve the problem:

**If a > b: GCD(a, b)= GCD(a – b, b)**. Therefore,**GCD(a, b) = GCD(a – b, b**).- On adding
**x**to**A, B, gcd(a + x, b + x) = gcd(a – b, b + x).**It can be seen that**(a – b)**remains constant. - It can be safely said that the GCD of these numbers will never exceed
**(a – b)**. Since**(b + x)**can be made a multiple of**(a – b)**by adding a possible value of**x**. - Therefore, it can be concluded that GCD remains
**(a – b).**

Below is the implementation of the above approach.

## C++

`// C++ implementation of above approach.` `#include <iostream>` `using` `namespace` `std;` `// Function to calculate maximum` `// gcd of two numbers possible by` `// adding same value to both a and b` `void` `maxGcd(` `int` `a, ` `int` `b)` `{` ` ` `cout << ` `abs` `(a - b);` `}` `// Driver Code` `int` `main()` `{` ` ` `// Given Input` ` ` `int` `a = 2231;` ` ` `int` `b = 343;` ` ` `maxGcd(a, b);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of above approach.` `import` `java.io.*;` `class` `GFG` `{` ` ` `// Function to calculate maximum` ` ` `// gcd of two numbers possible by` ` ` `// adding same value to both a and b` ` ` `static` `void` `maxGcd(` `int` `a, ` `int` `b)` ` ` `{` ` ` `System.out.println(Math.abs(a - b));` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `main (String[] args)` ` ` `{` ` ` `// Given Input` ` ` `int` `a = ` `2231` `;` ` ` `int` `b = ` `343` `;` ` ` `maxGcd(a, b);` ` ` `}` `}` `// This code is contributed by Potta Lokesh` |

## Python3

`# Python3 program for the above approach` `# Function to calculate maximum` `# gcd of two numbers possible by` `# adding same value to both a and b` `def` `maxGcd(a, b):` ` ` ` ` `print` `(` `abs` `(a ` `-` `b))` `# Driver code` `# Given Input` `a ` `=` `2231` `b ` `=` `343` `maxGcd(a, b)` `# This code is contributed by Parth Manchanda` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` ` ` `// Function to calculate maximum` ` ` `// gcd of two numbers possible by` ` ` `// adding same value to both a and b` ` ` `static` `void` `maxGcd(` `int` `a, ` `int` `b)` ` ` `{` ` ` `Console.Write(Math.Abs(a - b));` ` ` `}` `// Driver Code` `static` `public` `void` `Main ()` `{` ` ` ` ` `// Given Input` ` ` `int` `a = 2231;` ` ` `int` `b = 343;` ` ` `maxGcd(a, b);` `}` `}` `// This code is contributed by code_hunt.` |

## Javascript

`<script>` ` ` `// JavaScript Program for the above approach` ` ` `// Function to calculate maximum` ` ` `// gcd of two numbers possible by` ` ` `// adding same value to both a and b` ` ` `function` `maxGcd(a, b) {` ` ` `document.write(Math.abs(a - b));` ` ` `}` ` ` `// Driver Code` ` ` `// Given Input` ` ` `let a = 2231;` ` ` `let b = 343;` ` ` `maxGcd(a, b);` ` ` `// This code is contributed by Potta Lokesh` ` ` `</script>` |

**Output:**

1888

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