# Find two numbers whose sum and GCD are given

• Last Updated : 29 Jun, 2022

Given sum and gcd of two numbers and . The task is to find both the numbers a and b. If the numbers do not exist then print .
Examples:

Input: sum = 6, gcd = 2
Output: a = 4, b = 2
4 + 2 = 6 and GCD(4, 2) = 2
Input: sum = 7, gcd = 2
Output: -1
There are no such numbers whose sum is 7 and GCD is 2

Approach: As GCD is given then it is known that both the numbers will be multiples of it.

• Choose the first number as gcd then the other number will be sum – gcd.
• If the sum of both the numbers chosen in the previous step equals to sum then print both the numbers.
• Else the numbers do not exist and print -1 instead.

Below is the implementation of the above approach:

## C++

 `// C++ program to find two numbers` `// whose sum and GCD is given` `#include ` `using` `namespace` `std;`   `// Function to find two numbers` `// whose sum and gcd is given` `void` `findTwoNumbers(``int` `sum, ``int` `gcd)` `{` `    ``// sum != gcd checks that both the` `    ``// numbers are positive or not` `    ``if` `(__gcd(gcd, sum - gcd) == gcd && sum != gcd)` `        ``cout << ``"a = "` `<< min(gcd, sum - gcd)` `             ``<< ``", b = "` `<< sum - min(gcd, sum - gcd)` `             ``<< endl;` `    ``else` `        ``cout << -1 << endl;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `sum = 8;` `    ``int` `gcd = 2;`   `    ``findTwoNumbers(sum, gcd);`   `    ``return` `0;` `}`

## Java

 `// Java program to find two numbers ` `// whose sum and GCD is given ` `import` `java.util.*;` `class` `Solution{`   `//function to find gcd of two numbers` `static` `int` `__gcd(``int` `a,``int` `b)` `{` `    ``if` `(b==``0``) ``return` `a;` `   ``return` `__gcd(b,a%b);` `}` `    `  `// Function to find two numbers ` `// whose sum and gcd is given ` `static` `void` `findTwoNumbers(``int` `sum, ``int` `gcd) ` `{ ` `    ``// sum != gcd checks that both the ` `    ``// numbers are positive or not ` `    ``if` `(__gcd(gcd, sum - gcd) == gcd && sum != gcd) ` `        ``System.out.println(  ``"a = "` `+ Math.min(gcd, sum - gcd) ` `            ``+ ``", b = "` `+ (``int``)(sum - Math.min(gcd, sum - gcd)) ); ` `    ``else` `        ``System.out.println( -``1` `); ` `} `   `// Driver code ` `public` `static` `void` `main(String args[]) ` `{ ` `    ``int` `sum = ``8``; ` `    ``int` `gcd = ``2``; `   `    ``findTwoNumbers(sum, gcd); `   `} `     `}` `//contributed by Arnab Kundu`

## Python3

 `# Python 3 program to find two numbers` `# whose sum and GCD is given` `from` `math ``import` `gcd as __gcd`   `# Function to find two numbers` `# whose sum and gcd is given` `def` `findTwoNumbers(``sum``, gcd):` `    `  `    ``# sum != gcd checks that both the` `    ``# numbers are positive or not` `    ``if` `(__gcd(gcd, ``sum` `-` `gcd) ``=``=` `gcd ``and` `                          ``sum` `!``=` `gcd):` `        ``print``(``"a ="``, ``min``(gcd, ``sum` `-` `gcd), ` `              ``", b ="``, ``sum` `-` `min``(gcd, ``sum` `-` `gcd))` `    ``else``:` `        ``print``(``-``1``)` `        `  `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    ``sum` `=` `8` `    ``gcd ``=` `2`   `    ``findTwoNumbers(``sum``, gcd)`   `# This code is contributed by` `# Surendra_Gangwar`

## C#

 `// C# program to find two numbers ` `// whose sum and GCD is given ` `using` `System;` `class` `GFG` `{`   `// function to find gcd of two numbers` `static` `int` `__gcd(``int` `a, ``int` `b)` `{` `    ``if` `(b == 0) ` `        ``return` `a;` `    ``return` `__gcd(b, a % b);` `}` `    `  `// Function to find two numbers ` `// whose sum and gcd is given ` `static` `void` `findTwoNumbers(``int` `sum, ``int` `gcd) ` `{ ` `    ``// sum != gcd checks that both the ` `    ``// numbers are positive or not ` `    ``if` `(__gcd(gcd, sum - gcd) == gcd && sum != gcd) ` `        ``Console.WriteLine(``"a = "` `+ Math.Min(gcd, sum - gcd) + ` `            ``", b = "` `+ (``int``)(sum - Math.Min(gcd, sum - gcd))); ` `    ``else` `        ``Console.WriteLine( -1 ); ` `} `   `// Driver code ` `public` `static` `void` `Main() ` `{ ` `    ``int` `sum = 8; ` `    ``int` `gcd = 2; `   `    ``findTwoNumbers(sum, gcd); ` `} ` `}`   `// This code is contributed by anuj_67..`

## PHP

 ``

## Javascript

 ``

Output:

`a = 2, b = 6`

Time Complexity: O(log(min(a, b))), where a and b are two parameters of gcd.

Auxiliary Space: O(log(min(a, b)))

My Personal Notes arrow_drop_up
Recommended Articles
Page :