Open In App

Number of squares of maximum area in a rectangle

Improve
Improve
Like Article
Like
Save
Share
Report

Given a rectangle of sides m and n. Cut the rectangle into smaller identical pieces such that each piece is a square having maximum possible side length with no leftover part of the rectangle. Print number of such squares formed.
Examples: 
 

Input: 9 6
Output: 6
Rectangle can be cut into squares of size 3.

Input: 4 2
Output: 2
Rectangle can be cut into squares of size 2.

Approach: The task is to cut the rectangle in squares with the side of length s without pieces of the rectangle left over, so s must divide both m and n. Also, the side of the square should be maximum possible, therefore, s should be the greatest common divisor of m and n. 
so, s = gcd(m, n)
To find the number of squares the rectangle is cut into, the task to be done is to divide the area of a rectangle with an area of the square of size s. 
 

C++




// C++ code for calculating the
// number of squares
#include <bits/stdc++.h>
using namespace std;
 
// Function to find number of squares
int NumberOfSquares(int x, int y)
{
    // Here in built c++ gcd function is used
    int s = __gcd(x, y);
 
    int ans = (x * y) / (s * s);
 
    return ans;
}
 
// Driver code
int main()
{
    int m = 385, n = 60;
 
    // Call the function NumberOfSquares
    cout << NumberOfSquares(m, n);
 
    return 0;
}


C




// C code for calculating the
// number of squares
#include <stdio.h>
 
int gcd(int a, int b)
{
   int gcd = 1;
   for(int i = 1; i <= a && i <= b; i++) 
    
        if (a % i ==0 && b % i == 0) 
            gcd = i;
    }
    return gcd;
}
 
// Function to find number of squares
int NumberOfSquares(int x, int y)
{
    // Here in built c++ gcd function is used
    int s = gcd(x, y);
 
    int ans = (x * y) / (s * s);
 
    return ans;
}
 
// Driver code
int main()
{
    int m = 385, n = 60;
 
    // Call the function NumberOfSquares
    printf("%d",NumberOfSquares(m, n));
 
    return 0;
}
 
// This code is contributed by kothavvsaakash.


Java




// Java code for calculating
// the number of squares
import java.io.*;
 
class GFG
{
    // Recursive function to
    // return gcd of a and b
    static int __gcd(int a, int b)
    {
        // Everything divides 0
        if (a == 0 || b == 0)
        return 0;
     
        // base case
        if (a == b)
            return a;
     
        // a is greater
        if (a > b)
            return __gcd(a - b, b);
        return __gcd(a, b - a);
    }
 
 
// Function to find
// number of squares
static int NumberOfSquares(int x,
                           int y)
{
    // Here in built c++
    // gcd function is used
    int s = __gcd(x, y);
 
    int ans = (x * y) / (s * s);
 
    return ans;
}
 
// Driver Code
public static void main (String[] args)
{
    int m = 385, n = 60;
 
    // Call the function
    // NumberOfSquares
    System.out.println(NumberOfSquares(m, n));
}
}
 
// This code is contributed by anuj_67.


Python3




# Python3 code for calculating
# the number of squares
 
# Recursive function to
# return gcd of a and b
def __gcd(a, b):
     
    # Everything divides 0
    if (a == 0 or b == 0):
        return 0;
 
    # base case
    if (a == b):
        return a;
 
    # a is greater
    if (a > b):
        return __gcd(a - b, b);
    return __gcd(a, b - a);
 
# Function to find
# number of squares
def NumberOfSquares(x, y):
     
    # Here in built PHP
    # gcd function is used
    s = __gcd(x, y);
 
    ans = (x * y) / (s * s);
 
    return int(ans);
 
# Driver Code
m = 385;
n = 60;
 
# Call the function
# NumberOfSquares
print(NumberOfSquares(m, n));
 
# This code is contributed
# by mit


C#




// C# code for calculating
// the number of squares
using System;
 
class GFG
{
     
    // Recursive function to
    // return gcd of a and b
    static int __gcd(int a, int b)
    {
        // Everything divides 0
        if (a == 0 || b == 0)
        return 0;
     
        // base case
        if (a == b)
            return a;
     
        // a is greater
        if (a > b)
            return __gcd(a - b, b);
        return __gcd(a, b - a);
    }
 
 
// Function to find
// number of squares
static int NumberOfSquares(int x,
                           int y)
{
    // Here in built c++
    // gcd function is used
    int s = __gcd(x, y);
 
    int ans = (x * y) /
              (s * s);
 
    return ans;
}
 
// Driver Code
static public void Main ()
{
int m = 385, n = 60;
 
// Call the function
// NumberOfSquares
Console.WriteLine(NumberOfSquares(m, n));
}
}
 
// This code is contributed by ajit


PHP




<?php
// PHP code for calculating
// the number of squares
 
// Recursive function to
// return gcd of a and b
function __gcd($a, $b)
{
    // Everything divides 0
    if ($a == 0 || $b == 0)
    return 0;
 
    // base case
    if ($a == $b)
        return $a;
 
    // a is greater
    if ($a > $b)
        return __gcd($a - $b, $b);
    return __gcd($a, $b - $a);
}
 
// Function to find
// number of squares
function NumberOfSquares($x, $y)
{
    // Here in built PHP
    // gcd function is used
    $s = __gcd($x, $y);
 
    $ans = ($x * $y) /
           ($s * $s);
 
    return $ans;
}
 
// Driver Code
$m = 385;
$n = 60;
 
// Call the function
// NumberOfSquares
echo (NumberOfSquares($m, $n));
 
// This code is contributed
// by akt_mit
?>


Javascript




<script>
 
// Javascript code for calculating the
// number of squares
 
function __gcd(a, b)
{
    // Everything divides 0
    if (a == 0 || b == 0)
        return 0;
 
    // base case
    if (a == b)
        return a;
 
    // a is greater
    if (a > b)
        return __gcd(a - b, b);
    return __gcd(a, b - a);
}
     
// Function to find number of squares
function NumberOfSquares(x, y)
{
    // Here in built c++ gcd function is used
    let s = __gcd(x, y);
 
    let ans = parseInt((x * y) / (s * s));
 
    return ans;
}
 
// Driver code
    let m = 385, n = 60;
 
    // Call the function NumberOfSquares
    document.write(NumberOfSquares(m, n));
 
</script>


Output: 

924

 

Time complexity: O(log(max(m,n))

Auxiliary Space: O(1)



Last Updated : 13 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads