Given a number n, check if it is a perfect square or not.
Examples :
Input : n = 2500
Output : Yes
Explanation: 2500 is a perfect square of 50Input : n = 2555
Output : No
Approach:
- Take the floor()ed square root of the number.
- Multiply the square root twice.
- Use boolean equal operator to verify if the product of square root is equal to the number given.
C++
// CPP program to find if x is a // perfect square. #include <bits/stdc++.h> using namespace std; bool isPerfectSquare( long double x) { // Find floating point value of // square root of x. if (x >= 0) { long long sr = sqrt (x); // if product of square root //is equal, then // return T/F return (sr * sr == x); } // else return false if n<0 return false ; } int main() { long long x = 2502; if (isPerfectSquare(x)) cout << "Yes" ; else cout << "No" ; return 0; } |
Java
// Java program to find if x is a // perfect square. class GFG { static boolean isPerfectSquare( int x) { if (x >= 0 ) { // Find floating point value of // square root of x. int sr = ( int )Math.sqrt(x); // if product of square root // is equal, then // return T/F return ((sr * sr) == x); } return false ; } // Driver code public static void main(String[] args) { int x = 2502 ; if (isPerfectSquare(x)) System.out.print( "Yes" ); else System.out.print( "No" ); } } // This code is contributed by Anant Agarwal. |
Python3
# Python program to find if x is a # perfect square. import math def isPerfectSquare(x): #if x >= 0, if (x > = 0 ): sr = int (math.sqrt(x)) # sqrt function returns floating value so we have to convert it into integer #return boolean T/F return ((sr * sr) = = x) return false # Driver code x = 2502 if (isPerfectSquare(x)): print ( "Yes" ) else : print ( "No" ) # This code is contributed # by Anant Agarwal. |
C#
// C# program to find if x is a // perfect square. using System; class GFG { static bool isPerfectSquare( double x) { // Find floating point value of // square root of x. if (x >= 0) { double sr = Math.Sqrt(x); // if product of square root // is equal, then // return T/F return (sr * sr == x); } // else return false if n<0 return false ; } // Driver code public static void Main() { double x = 2502; if (isPerfectSquare(x)) Console.WriteLine( "Yes" ); else Console.WriteLine( "No" ); } } // This code is contributed by vt_m. |
Javascript
<script> // JavaScript program to find if x is a // perfect square. function isPerfectSquare(x) { if (x >= 0) { // Find floating point value of // square root of x. let sr = Math.sqrt(x); // if product of square root // is equal, then // return T/F return ((sr * sr) == x); } return false ; } // Driver code let x = 2500; if (isPerfectSquare(x)) document.write( "Yes" ); else document.write( "No" ); // This code is contributed by souravghosh0416. </script> |
PHP
<?php // PHP program to find if x is // a perfect square. function isPerfectSquare( $x ) { // Find floating point value // of square root of x. $sr = sqrt( $x ); // If square root is an integer return (( $sr - floor ( $sr )) == 0); } // Driver code $x = 2502; if (isPerfectSquare( $x )) echo ( "Yes" ); else echo ( "No" ); // This code is contributed by Ajit. ?> |
No
Time Complexity: O(log(x))
Auxiliary Space: O(1)
Check if given number is perfect square using ceil, floor and sqrt() function.
- Use the floor and ceil and sqrt() function.
- If they are equal that implies the number is a perfect square.
C++
// C++ program for the above approach #include <iostream> #include <math.h> using namespace std; void checkperfectsquare( int n) { // If ceil and floor are equal // the number is a perfect // square if ( ceil (( double ) sqrt (n)) == floor (( double ) sqrt (n))) { cout << "perfect square" ; } else { cout << "not a perfect square" ; } } // Driver Code int main() { int n = 49; checkperfectsquare(n); return 0; } |
Java
// Java program for the above approach import java.io.*; class GFG{ static void checkperfectsquare( int n) { // If ceil and floor are equal // the number is a perfect // square if (Math.ceil(( double )Math.sqrt(n)) == Math.floor(( double )Math.sqrt(n))) { System.out.print( "perfect square" ); } else { System.out.print( "not a perfect square" ); } } // Driver Code public static void main(String[] args) { int n = 49 ; checkperfectsquare(n); } } // This code is contributed by subhammahato348 |
Python3
# Python3 program for the above approach import math def checkperfectsquare(x): # If ceil and floor are equal # the number is a perfect # square if (math.ceil(math.sqrt(n)) = = math.floor(math.sqrt(n))): print ( "perfect square" ) else : print ( "not a perfect square" ) # Driver code n = 49 checkperfectsquare(n) # This code is contributed by jana_sayantan |
C#
// C# program for the above approach using System; class GFG{ static void checkperfectsquare( int n) { // If ceil and floor are equal // the number is a perfect // square if (Math.Ceiling(( double )Math.Sqrt(n)) == Math.Floor(( double )Math.Sqrt(n))) { Console.Write( "perfect square" ); } else { Console.Write( "not a perfect square" ); } } // Driver Code public static void Main() { int n = 49; checkperfectsquare(n); } } // This code is contributed by subhammahato348 |
Javascript
<script> // Javascript program for the above approach function checkperfectsquare(n) { // If ceil and floor are equal // the number is a perfect // square if (Math.ceil(Math.sqrt(n)) == Math.floor(Math.sqrt(n))) { document.write( "perfect square" ); } else { document.write( "not a perfect square" ); } } // Driver Code let n = 49; checkperfectsquare(n); // This code is contributed by rishavmahato348 </script> |
perfect square
Time Complexity : O(sqrt(n))
Auxiliary space: O(1)
Check if given number is perfect square using Binary search:
Below is the implementation of the above approach:
C++14
#include <bits/stdc++.h> using namespace std; // Function to check if a number is a perfect square using // binary search bool isPerfectSquare( int n) { // Base case: 0 and 1 are perfect squares if (n <= 1) { return true ; } // Initialize boundaries for binary search long long left = 1, right = n; while (left <= right) { // Calculate middle value long long mid = left + (right - left) / 2; // Calculate square of the middle value long long square = mid * mid; // If the square matches n, n is a perfect square if (square == n) { return true ; } // If the square is smaller than n, search the right // half else if (square < n) { left = mid + 1; } // If the square is larger than n, search the left // half else { right = mid - 1; } } // If the loop completes without finding a perfect // square, n is not a perfect square return false ; } int main() { int n = 2500; if (isPerfectSquare(n)) { cout << n << " is a perfect square." << endl; } else { cout << n << " is not a perfect square." << std::endl; } return 0; } |
Java
public class PerfectSquareCheck { // Function to check if a number is a perfect square // using binary search static boolean isPerfectSquare( int n) { // Base case: 0 and 1 are perfect squares if (n <= 1 ) { return true ; } // Initialize boundaries for binary search long left = 1 , right = n; while (left <= right) { // Calculate middle value long mid = left + (right - left) / 2 ; // Calculate square of the middle value long square = mid * mid; // If the square matches n, n is a perfect // square if (square == n) { return true ; } // If the square is smaller than n, search the // right half else if (square < n) { left = mid + 1 ; } // If the square is larger than n, search the // left half else { right = mid - 1 ; } } // If the loop completes without finding a perfect // square, n is not a perfect square return false ; } public static void main(String[] args) { int n = 2500 ; if (isPerfectSquare(n)) { System.out.println(n + " is a perfect square." ); } else { System.out.println( n + " is not a perfect square." ); } } } |
Python
# Function to check if a number is a perfect square using binary search def isPerfectSquare(n): # Base case: 0 and 1 are perfect squares if n < = 1 : return True # Initialize boundaries for binary search left, right = 1 , n while left < = right: # Calculate middle value mid = left + (right - left) / / 2 # Calculate square of the middle value square = mid * mid # If the square matches n, n is a perfect square if square = = n: return True # If the square is smaller than n, search the right half elif square < n: left = mid + 1 # If the square is larger than n, search the left half else : right = mid - 1 # If the loop completes without finding a perfect square, n is not a perfect square return False n = 2500 if isPerfectSquare(n): print (n, "is a perfect square." ) else : print (n, "is not a perfect square." ) |
C#
using System; class Program { // Function to check if a number is a perfect square using binary search static bool IsPerfectSquare( int n) { // Base case: 0 and 1 are perfect squares if (n <= 1) { return true ; } // Initialize boundaries for binary search long left = 1, right = n; while (left <= right) { // Calculate middle value long mid = left + (right - left) / 2; // Calculate square of the middle value long square = mid * mid; // If the square matches n, n is a perfect square if (square == n) { return true ; } // If the square is smaller than n, search the right half else if (square < n) { left = mid + 1; } // If the square is larger than n, search the left half else { right = mid - 1; } } // If the loop completes without finding a perfect square, n is not a perfect square return false ; } static void Main( string [] args) { int n = 2500; if (IsPerfectSquare(n)) { Console.WriteLine(n + " is a perfect square." ); } else { Console.WriteLine(n + " is not a perfect square." ); } } } |
Javascript
// Function to check if a number is a perfect square using binary search function isPerfectSquare(n) { // Base case: 0 and 1 are perfect squares if (n <= 1) { return true ; } // Initialize boundaries for binary search let left = 1, right = n; while (left <= right) { // Calculate middle value let mid = Math.floor(left + (right - left) / 2); // Calculate square of the middle value let square = mid * mid; // If the square matches n, n is a perfect square if (square === n) { return true ; } // If the square is smaller than n, search the right half else if (square < n) { left = mid + 1; } // If the square is larger than n, search the left half else { right = mid - 1; } } // If the loop completes without finding a perfect square, n is not a perfect square return false ; } const n = 2500; if (isPerfectSquare(n)) { console.log(n + " is a perfect square." ); } else { console.log(n + " is not a perfect square." ); } |
2500 is a perfect square.
Time Complexity: O(log n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!