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