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

Last Updated : 23 Jul, 2025

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 <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)


 

Comment