Given a positive integer . The task is to find the perfect square number closest to N and steps required to reach this number from N.
Note: The closest perfect square to N can be either less than, equal to or greater than N and steps is referred to the difference between N and the closest perfect square.
Input: N = 1500
Output: Perfect square = 1521, Steps = 21
For N = 1500
Closest perfect square greater than N is 1521.
So steps required is 21.
Closest perfect square less than N is 1444.
So steps required is 56.
The minimum of these two is 1521 with steps 21.
Input: N = 2
Output: Perfect Square = 1, Steps = 1
For N = 2
Closest perfect square greater than N is 4.
So steps required is 2.
Closest perfect square less than N is 1.
So steps required is 1.
The minimum of these two is 1.
- If N is a perefct square then print N and steps as 0.
- Else, find the first perfect square number > N and note its difference with N.
- Then, find the first perfect square number < N and note its difference with N.
- And print the perfect square resulting in the minimum of these two differences obtained and also the difference as the minimum steps.
Below is the implementation of the above approach:
# Python3 program to find the closest
# perfect square taking minimum steps
# to reach from a number
# Function to check if a number is
# perfect square or not
from math import sqrt, floor
if (sqrt(N) – floor(sqrt(N)) != 0):
# Function to find the closest perfect square
# taking minimum steps to reach from a number
# Variables to store first perfect
# square number above and below N
aboveN = -1
belowN = -1
n1 = 0
# Finding first perfect square
# number greater than N
n1 = N + 1
aboveN = n1
n1 += 1
# Finding first perfect square
# number less than N
n1 = N – 1
belowN = n1
n1 -= 1
# Variables to store the differences
diff1 = aboveN – N
diff2 = N – belowN
if (diff1 > diff2):
# Driver code
N = 1500
# This code is contributed
# by sahishelangia
- Count numbers upto N which are both perfect square and perfect cube
- Check if a number is perfect square without finding square root
- Perfect Square String
- Check if given number is perfect square
- Print n numbers such that their sum is a perfect square
- Largest number that is not a perfect square
- Check perfect square using addition/subtraction
- Largest factor of a given number which is a perfect square
- Count of pairs in an array whose sum is a perfect square
- Largest perfect square number in an Array
- Find the Next perfect square greater than a given number
- Largest Divisor of a Number not divisible by a perfect square
- Smallest perfect square divisible by all elements of an array
- Check whether the number can be made perfect square after adding 1
- Minimum digits to remove to make a number Perfect Square
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.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.