Skip to content
Related Articles

Related Articles

Improve Article

Find two numbers with sum and product both same as N

  • Last Updated : 10 May, 2021

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 N2 – 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( N2 – 4*N ) ) / 2 
b = ( N – sqrt( N2 – 4*N ) ) / 2 
 



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;
}

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

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   

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
}

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

Javascript




<script>
    // Javascript program to find a and b
    // such that a*b=N and a+b=N
     
    // Function to return the smallest string
    function findAandB(N)
    {
      let val = N * N - 4.0 * N;
 
      // Not possible
      if (val < 0) {
        document.write("NO");
        return;
      }
 
      // find a and b
      let a = (N + Math.sqrt(val)) / 2.0;
      let b = (N - Math.sqrt(val)) / 2.0;
 
      document.write("a = "+a.toFixed(4) + "</br>");
      document.write("b = "+b.toFixed(5));
    }
     
    let N = 69.0;
    findAandB(N);
         
</script>
Output: 
a = 67.9851
b = 1.01493

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :