Related Articles
Rectangle with minimum possible difference between the length and the width
• Difficulty Level : Medium
• Last Updated : 01 Feb, 2021

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

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 possiblevoid 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 codeint main(){    int area = 99;    find_rectangle(area);    return 0;}

## Java

 // Java implementation of the approachclass 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 approachimport math as mt # Function to print the length (l)# and breadth (b) of the rectangle# having area = N and |l - b| as# minimum as possibledef 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 codearea = 99find_rectangle(area) # This code is contributed by# Mohit kumar 29

## C#

 // C# implementation of the approachusing 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

Time Complexity: O( )
Below is simple implementation.

## CPP

 // 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 possiblevoid 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 codeint main(){    int area = 99;    find_rectangle(area);    return 0;}

## Java

 // Java implementation of the approachimport 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 approachimport math # Function to print the length (l)# and breadth (b) of the rectangle# having area = N and |l - b| as# minimum as possibledef 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 codearea = 99find_rectangle(area) # This code is contributed by avanitrachhadiya2155

## C#

 // C# implementation of the approachusing 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.
Output:
11 9

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

My Personal Notes arrow_drop_up