# Number of times the largest perfect square number can be subtracted from N

Given a number **N**. At every step, subtract the largest perfect square( ≤ N) from N. Repeat this step while **N > 0**. The task is to count the number of steps that can be performed.

**Examples:**

Input:N = 85Output:2

First step, 85 – (9 * 9) = 4

Second step 4 – (2 * 2) = 0

Input:N = 114Output:4

First step, 114 – (10 * 10) = 14

Second step 14 – (3 * 3) = 5

Third step 5 – (2 * 2) = 1

Fourth step 1 – (1 * 1) = 0

**Approach**: Iteratively subtract the largest perfect square **(≤ N)** from **N** while **N > 0** and count the number of steps.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the count of steps` `int` `countSteps(` `int` `n)` `{` ` ` `// Variable to store the count of steps` ` ` `int` `steps = 0;` ` ` `// Iterate while N > 0` ` ` `while` `(n) {` ` ` `// Get the largest perfect square` ` ` `// and subtract it from N` ` ` `int` `largest = ` `sqrt` `(n);` ` ` `n -= (largest * largest);` ` ` `// Increment steps` ` ` `steps++;` ` ` `}` ` ` `// Return the required count` ` ` `return` `steps;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `n = 85;` ` ` `cout << countSteps(n);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `import` `java.lang.Math;` `public` `class` `GfG{` ` ` `// Function to return the count of steps` ` ` `static` `int` `countSteps(` `int` `n)` ` ` `{` ` ` `// Variable to store the count of steps` ` ` `int` `steps = ` `0` `;` ` ` ` ` `// Iterate while N > 0` ` ` `while` `(n > ` `0` `) {` ` ` ` ` `// Get the largest perfect square` ` ` `// and subtract it from N` ` ` `int` `largest = (` `int` `)Math.sqrt(n);` ` ` `n -= (largest * largest);` ` ` ` ` `// Increment steps` ` ` `steps++;` ` ` `}` ` ` ` ` `// Return the required count` ` ` `return` `steps;` ` ` `}` ` ` `public` `static` `void` `main(String []args){` ` ` ` ` `int` `n = ` `85` `;` ` ` `System.out.println(countSteps(n));` ` ` `}` `}` `// This code is contributed by Rituraj Jain` |

## Python3

`# Python3 implementation of the approach` `from` `math ` `import` `sqrt` `# Function to return the count of steps` `def` `countSteps(n) :` ` ` `# Variable to store the count of steps` ` ` `steps ` `=` `0` `;` ` ` `# Iterate while N > 0` ` ` `while` `(n) :` ` ` `# Get the largest perfect square` ` ` `# and subtract it from N` ` ` `largest ` `=` `int` `(sqrt(n));` ` ` `n ` `-` `=` `(largest ` `*` `largest);` ` ` `# Increment steps` ` ` `steps ` `+` `=` `1` `;` ` ` `# Return the required count` ` ` `return` `steps;` ` ` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `n ` `=` `85` `;` ` ` `print` `(countSteps(n));` ` ` `# This code is contributed by Ryuga` |

## C#

`// C# implementation of the approach` `using` `System;` `class` `GfG` `{` ` ` `// Function to return the count of steps` ` ` `static` `int` `countSteps(` `int` `n)` ` ` `{` ` ` `// Variable to store the count of steps` ` ` `int` `steps = 0;` ` ` ` ` `// Iterate while N > 0` ` ` `while` `(n > 0)` ` ` `{` ` ` ` ` `// Get the largest perfect square` ` ` `// and subtract it from N` ` ` `int` `largest = (` `int` `)Math.Sqrt(n);` ` ` `n -= (largest * largest);` ` ` ` ` `// Increment steps` ` ` `steps++;` ` ` `}` ` ` ` ` `// Return the required count` ` ` `return` `steps;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `n = 85;` ` ` `Console.WriteLine(countSteps(n));` ` ` `}` `}` `// This code is contributed by Code_Mech.` |

## PHP

`<?php` `// PHP implementation of the approach` `// Function to return the count of steps` `function` `countSteps(` `$n` `)` `{` ` ` `// Variable to store the count of steps` ` ` `$steps` `= 0;` ` ` `// Iterate while N > 0` ` ` `while` `(` `$n` `)` ` ` `{` ` ` `// Get the largest perfect square` ` ` `// and subtract it from N` ` ` `$largest` `= (int)sqrt(` `$n` `);` ` ` `$n` `-= (` `$largest` `* ` `$largest` `);` ` ` `// Increment steps` ` ` `$steps` `++;` ` ` `}` ` ` `// Return the required count` ` ` `return` `$steps` `;` `}` `// Driver code` `$n` `= 85;` `echo` `countSteps(` `$n` `);` `// This code is contributed` `// by Akanksha Rai` `?>` |

## Javascript

`<script>` `// JavaScript implementation of the approach` `// Function to return the count of steps` `function` `countSteps(n)` `{` ` ` ` ` `// Variable to store the count of steps` ` ` `let steps = 0;` ` ` `// Iterate while N > 0` ` ` `while` `(n)` ` ` `{` ` ` ` ` `// Get the largest perfect square` ` ` `// and subtract it from N` ` ` `let largest = Math.floor(Math.sqrt(n));` ` ` `n -= (largest * largest);` ` ` `// Increment steps` ` ` `steps++;` ` ` `}` ` ` `// Return the required count` ` ` `return` `steps;` `}` `// Driver code` `let n = 85;` `document.write(countSteps(n));` `// This code is contributed by Manoj.` `</script>` |

**Output:**

2

**Time Complexity: **O(1)

**Auxiliary Space: **O(1)

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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.