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
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)
Please Login to comment...