 Open in App
Not now

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

• Difficulty Level : Medium
• Last Updated : 11 Aug, 2021

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

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

Input: A = 2, B = 23
Output: 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 ` `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

 ``

Output:

`1888`

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

My Personal Notes arrow_drop_up
Related Articles