# Find two numbers with sum and product both same as N

Given an integer *N*, the task is to find two numbers *a and b* such that *a * b = N* and *a + b = N*. Print “NO” if no such numbers are possible.

**Examples:**

Input:N = 69

Output:a = 67.9851

b = 1.01493

Input:N = 1

Output:NO

**Approach:** If observed carefully, we are given with sum and product of roots of a quadratic equation.

If *N ^{2} – 4*N < 0* then only imaginary roots are possible for the equation, hence “NO” will be the answer. Else

*a and b*will be:

a = ( N + sqrt(

N) ) / 2^{2}– 4*N

b = ( N – sqrt(N) ) / 2^{2}– 4*N

Below is the implementation of the above approach:

## C++

`// C++ program to find a and b ` `// such that a*b=N and a+b=N ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to return the smallest string ` `void` `findAandB(` `double` `N) ` `{ ` ` ` `double` `val = N * N - 4.0 * N; ` ` ` ` ` `// Not possible ` ` ` `if` `(val < 0) { ` ` ` `cout << ` `"NO"` `; ` ` ` `return` `; ` ` ` `} ` ` ` ` ` `// find a and b ` ` ` `double` `a = (N + ` `sqrt` `(val)) / 2.0; ` ` ` `double` `b = (N - ` `sqrt` `(val)) / 2.0; ` ` ` ` ` `cout << ` `"a = "` `<< a << endl; ` ` ` `cout << ` `"b = "` `<< b << endl; ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `double` `N = 69.0; ` ` ` `findAandB(N); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to find a and b ` `// such that a*b=N and a+b=N ` ` ` `class` `GFG{ ` `// Function to return the smallest string ` `static` `void` `findAandB(` `double` `N) ` `{ ` ` ` `double` `val = N * N - ` `4.0` `* N; ` ` ` ` ` `// Not possible ` ` ` `if` `(val < ` `0` `) { ` ` ` `System.out.println(` `"NO"` `); ` ` ` `return` `; ` ` ` `} ` ` ` ` ` `// find a and b ` ` ` `double` `a = (N + Math.sqrt(val)) / ` `2.0` `; ` ` ` `double` `b = (N - Math.sqrt(val)) / ` `2.0` `; ` ` ` ` ` `System.out.println(` `"a = "` `+a); ` ` ` `System.out.println(` `"b = "` `+b); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `double` `N = ` `69.0` `; ` ` ` `findAandB(N); ` `} ` `} ` `// This Code is contributed by mits ` |

*chevron_right*

*filter_none*

## Python3

# Python 3 program to find a and b

# such that a*b=N and a+b=N

from math import sqrt

# Function to return the

# smallest string

def findAandB(N):

val = N * N – 4.0 * N

# Not possible

if (val < 0):
print("NO")
return
# find a and b
a = (N + sqrt(val)) / 2.0
b = (N - sqrt(val)) / 2.0
print("a =", '{0:.6}' . format(a))
print("b =", '{0:.6}' . format(b))
# Driver Code
if __name__ == '__main__':
N = 69.0
findAandB(N)
# This code is contributed
# by SURENDRA_GANGWAR
[tabby title = "C#"]

`// C# program to find a and b ` `// such that a*b=N and a+b=N ` ` ` `using` `System; ` `class` `GFG ` `{ ` `// Function to return the smallest string ` `static` `void` `findAandB(` `double` `N) ` `{ ` `double` `val = N * N - 4.0 * N; ` ` ` `// Not possible ` `if` `(val < 0) { ` `Console.WriteLine(` `"NO"` `); ` `return` `; ` `} ` ` ` `// find a and b ` `double` `a = (N + Math.Sqrt(val)) / 2.0; ` `double` `b = (N - Math.Sqrt(val)) / 2.0; ` ` ` `Console.WriteLine(` `"a = "` `+a); ` `Console.WriteLine(` `"b = "` `+b); ` `} ` ` ` `// Driver Code ` `static` `void` `Main() ` `{ ` `double` `N = 69.0; ` `findAandB(N); ` `} ` `// This code is contributed by ANKITRAI1 ` `} ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP program to find a and b ` `// such that a*b=N and a+b=N ` ` ` `// Function to return the ` `// smallest string ` `function` `findAandB(` `$N` `) ` `{ ` ` ` `$val` `= ` `$N` `* ` `$N` `- 4.0 * ` `$N` `; ` ` ` ` ` `// Not possible ` ` ` `if` `(` `$val` `< 0) ` ` ` `{ ` ` ` `echo` `"NO"` `; ` ` ` `return` `; ` ` ` `} ` ` ` ` ` `// find a and b ` ` ` `$a` `= (` `$N` `+ sqrt(` `$val` `)) / 2.0; ` ` ` `$b` `= (` `$N` `- sqrt(` `$val` `)) / 2.0; ` ` ` ` ` `echo` `"a = "` `, ` `$a` `, ` `"\n"` `; ` ` ` `echo` `"b = "` `, ` `$b` `, ` `"\n"` `; ` `} ` ` ` `// Driver Code ` `$N` `= 69.0; ` `findAandB(` `$N` `); ` ` ` `// This code is contributed by ajit ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

a = 67.9851 b = 1.01493

## Recommended Posts:

- Find the Product of first N Prime Numbers
- Find if n can be written as product of k numbers
- Find two distinct prime numbers with given product
- Find maximum product of digits among numbers less than or equal to N
- Numbers less than N which are product of exactly two distinct prime numbers
- Absolute difference between the Product of Non-Prime numbers and Prime numbers of an Array
- Check whether product of 'n' numbers is even or odd
- Product of 2 Numbers using Recursion
- First digit in product of an array of numbers
- Number of digits in the product of two numbers
- Product of all the Composite Numbers in an array
- Sum and Product of all Composite numbers which are divisible by k in an array
- Count pairs of numbers from 1 to N with Product divisible by their Sum
- Check if product of first N natural numbers is divisible by their sum
- Last digit of Product of two Large or Small numbers (a * b)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.