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 mathdef 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 codex = 2502if (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 Codeint main(){ int n = 49; checkperfectsquare(n); return 0;} |
Java
// Java program for the above approachimport 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 Codepublic static void main(String[] args){ int n = 49; checkperfectsquare(n);}}// This code is contributed by subhammahato348 |
Python3
# Python3 program for the above approachimport mathdef 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 coden = 49 checkperfectsquare(n)# This code is contributed by jana_sayantan |
C#
// C# program for the above approachusing 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 Codepublic static void Main(){ int n = 49; checkperfectsquare(n);}}// This code is contributed by subhammahato348 |
Javascript
<script>// Javascript program for the above approachfunction 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 Codelet 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 searchbool 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 searchdef 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 Falsen = 2500if 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 searchfunction 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!
