# Rectangle with minimum possible difference between the length and the width

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The task is to find two integers l and b such that l * b = area and |l – b| is as minimum 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 upto . 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  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 prthe 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

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

Output:

l = 11, b = 9

Output:

l = 11, b = 9


Time Complexity: O( )

Below is simple implementation.

 // C++ implementation of the approach  #include  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;  }

Output:

11 9


My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.