Maximum GCD of two numbers possible by adding same value to them
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++
#include <iostream>
using namespace std;
void maxGcd( int a, int b)
{
cout << abs (a - b);
}
int main()
{
int a = 2231;
int b = 343;
maxGcd(a, b);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static void maxGcd( int a, int b)
{
System.out.println(Math.abs(a - b));
}
public static void main (String[] args)
{
int a = 2231 ;
int b = 343 ;
maxGcd(a, b);
}
}
|
Python3
def maxGcd(a, b):
print ( abs (a - b))
a = 2231
b = 343
maxGcd(a, b)
|
C#
using System;
class GFG{
static void maxGcd( int a, int b)
{
Console.Write(Math.Abs(a - b));
}
static public void Main ()
{
int a = 2231;
int b = 343;
maxGcd(a, b);
}
}
|
Javascript
<script>
function maxGcd(a, b) {
document.write(Math.abs(a - b));
}
let a = 2231;
let b = 343;
maxGcd(a, b);
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...