Given an integer area, the task is to find the length and breadth of a rectangle with the given area such that the difference between the length and the breadth is the minimum possible.
Examples:
Input: area = 99
Output: l = 11, b = 9
All possible rectangles (l, b) are (99, 1), (33, 3) and (11, 9)
And the one with the minimum |l – b| is (11, 9)Input: area = 25
Output: l = 5, b = 5
Approach: The task is to find two integers l and b such that l * b = area and |l – b| are as minimal as possible. Factorization can be used to solve the problem, but doing just simple factorization from 1 to N will take a long time to get the required output for larger values of N.
To overcome this, just iterate up to. Considering < l ? N, then for all values of l, b will always be < .
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible void find_rectangle( int area) { int l, b; int M = sqrt (area), ans; for ( int i = M; i >= 1; i--) { // i is a factor if (area % i == 0) { // l >= sqrt(area) >= i l = (area / i); // so here l is +ve always b = i; break ; } } // Here l and b are length and // breadth of the rectangle cout << "l = " << l << ", b = " << b << endl; } // Driver code int main() { int area = 99; find_rectangle(area); return 0; } |
Java
// Java implementation of the approach class GFG { // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible static void find_rectangle( int area) { int l = 0 , b = 0 ; int M = ( int )Math.sqrt(area), ans; for ( int i = M; i >= 1 ; i--) { // i is a factor if (area % i == 0 ) { // l >= sqrt(area) >= i l = (area / i); // so here l is +ve always b = i; break ; } } // Here l and b are length and // breadth of the rectangle System.out.println( "l = " + l + ", b = " + b); } // Driver code public static void main(String[] args) { int area = 99 ; find_rectangle(area); } } // This code is contributed by Ita_c. |
Python3
# Python3 implementation of the approach import math as mt # Function to print the length (l) # and breadth (b) of the rectangle # having area = N and |l - b| as # minimum as possible def find_rectangle(area): l, b = 0 , 0 M = mt.ceil(mt.sqrt(area)) ans = 0 for i in range (M, 0 , - 1 ): # i is a factor if (area % i = = 0 ): # l >= sqrt(area) >= i l = (area / / i) # so here l is + ve always b = i break # Here l and b are length and # breadth of the rectangle print ( "l =" , l, ", b =" , b) # Driver code area = 99 find_rectangle(area) # This code is contributed by # Mohit kumar 29 |
C#
// C# implementation of the approach using System; class GFG { // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible static void find_rectangle( int area) { int l = 0, b = 0; int M = ( int )Math.Sqrt(area); for ( int i = M; i >= 1; i--) { // i is a factor if (area % i == 0) { // l >= sqrt(area) >= i l = (area / i); // so here l is +ve always b = i; break ; } } // Here l and b are length and // breadth of the rectangle Console.WriteLine( "l = " + l + ", b = " + b); } // Driver code public static void Main() { int area = 99; find_rectangle(area); } } // This code is contributed by Mukul Singh. |
PHP
<?php // Php implementation of the approach // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible function find_rectangle( $area ) { $M = floor (sqrt( $area )); for ( $i = $M ; $i >= 1; $i --) { // i is a factor if ( $area % $i == 0) { // l >= sqrt(area) >= i $l = floor ( $area / $i ); // so here l is +ve always $b = $i ; break ; } } // Here l and b are length and // breadth of the rectangle echo "l = " , $l , ", b = " , $b , "\n" ; } // Driver code $area = 99; find_rectangle( $area ); // This code is contributed by Ryuga ?> |
Javascript
<script> // Javascript implementation of the approach // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible function find_rectangle(area) { let l = 0, b = 0; let M = Math.floor(Math.sqrt(area)), ans; for (let i = M; i >= 1; i--) { // i is a factor if (area % i == 0) { // l >= sqrt(area) >= i l = Math.floor(area / i); // so here l is +ve always b = i; break ; } } // Here l and b are length and // breadth of the rectangle document.write( "l = " + l + ", b = " + b); } // Driver code let area = 99; find_rectangle(area); </script> |
l = 11, b = 9
Time Complexity: O()
Auxiliary Space: O(1)
Below is a simple implementation.
CPP
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible void find_rectangle( int area) { for ( int i = ceil ( sqrt (area)); i <= area; i++) { if (area / i * i == area) { printf ( "%d %d" , i, area / i); return ; } } } // Driver code int main() { int area = 99; find_rectangle(area); return 0; } |
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible static void find_rectangle( int area) { for ( int i = ( int )Math.ceil(Math.sqrt(area)); i <= area; i++) { if (area / i * i == area) { System.out.println(i + " " + ( int )(area / i)); return ; } } } // Driver code public static void main (String[] args) { int area = 99 ; find_rectangle(area); } } // This code is contributed by rag2127 |
Python3
# Python3 implementation of the approach import math # Function to print the length (l) # and breadth (b) of the rectangle # having area = N and |l - b| as # minimum as possible def find_rectangle(area): for i in range ( int (math.ceil(math.sqrt(area))) , area + 1 ): if (( int (area / i) * i) = = area): print (i, int (area / i)) return # Driver code area = 99 find_rectangle(area) # This code is contributed by avanitrachhadiya2155 |
C#
// C# implementation of the approach using System; class GFG { // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible static void find_rectangle( int area) { for ( int i = ( int )Math.Ceiling(Math.Sqrt(area)); i <= area; i++) { if (area / i * i == area) { Console.WriteLine(i + " " + ( int )(area / i)); return ; } } } // Driver code static void Main() { int area = 99; find_rectangle(area); } } // This code is contributed by divyeshrabadiya07. |
Javascript
<script> // Javascript implementation of the approach // Function to print the length (l) // and breadth (b) of the rectangle // having area = N and |l - b| as // minimum as possible function find_rectangle(are) { for (let i = Math.floor(Math.ceil(Math.sqrt(area))); i <= area; i++) { if (Math.floor(area / i) * i == area) { document.write(i + " " + Math.floor(area / i)); return ; } } } // Driver code let area = 99; find_rectangle(area); // This code is contributed by unknown2108 </script> |
11 9
Time Complexity: O(log(area)), due to inbuild function sqrt()
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!