# Check if a number is perfect square without finding square root

We need to check whether a number is a perfect square or not without finding its square root.
Examples:

Input : n = 36
Output : Yes
Input : n = 12
Output : No

We have discussed a method to check if a number is perfect square.
Method 1:
The idea is to run a loop from i = 1 to floor(sqrt(n)) then check if squaring it makes n.

## C++

 `// C++ program to check if a number is perfect` `// square without finding square root` `#include ` `using` `namespace` `std;`   `bool` `isPerfectSquare(``int` `n)` `{` `    ``for` `(``int` `i = 1; i * i <= n; i++) {`   `        ``// If (i * i = n)` `        ``if` `((n % i == 0) && (n / i == i)) {` `            ``return` `true``;` `        ``}` `    ``}` `    ``return` `false``;` `}`   `// Driver code` `int` `main()` `{` `    ``long` `long` `int` `n = 36;` `    ``if` `(isPerfectSquare(n))` `        ``cout << ``"Yes"``;` `    ``else` `        ``cout << ``"No"``;`   `    ``return` `0;` `}`

## Java

 `// Java program to check if a number is perfect` `// square without finding the square root` `public` `class` `GfG {`   `    ``static` `boolean` `isPerfectSquare(``int` `n)` `    ``{` `        ``for` `(``int` `i = ``1``; i * i <= n; i++) {`   `            ``// If (i * i = n)` `            ``if` `((n % i == ``0``) && (n / i == i)) {` `                ``return` `true``;` `            ``}` `        ``}` `        ``return` `false``;` `    ``}`   `    ``public` `static` `void` `main(String[] args)` `    ``{`   `        ``int` `n = ``36``;`   `        ``if` `(isPerfectSquare(n))` `            ``System.out.println(``"Yes"``);` `        ``else` `            ``System.out.println(``"No"``);` `    ``}` `}`   `// This code is contributed by Rituraj Jain`

## Python3

 `# Python3 program to check if a number is ` `# perfect square without finding square root `   `# from math import sqrt function`     `def` `isPerfectSquare(n) :`   `    ``i ``=` `1` `    ``while``(i ``*` `i<``=` `n):` `        `  `        ``# If (i * i = n)` `        ``if` `((n ``%` `i ``=``=` `0``) ``and` `(n ``/` `i ``=``=` `i)):` `            ``return` `True` `            `  `        ``i ``=` `i ``+` `1` `    ``return` `False`   `# Driver code ` `if` `__name__ ``=``=` `"__main__"` `: `   `    ``n ``=` `36` `    ``if` `(isPerfectSquare(n)):` `        ``print``(``"Yes, it is a perfect square."``)` `    ``else` `:` `        ``print``(``"No, it is not a perfect square."``)`   `    ``# This code is contributed by Ryuga`

## C#

 `// C# program to check if a number is perfect` `// square without finding the square root` `using` `System;`   `public` `class` `GfG {`   `    ``static` `bool` `isPerfectSquare(``int` `n)` `    ``{` `        ``for` `(``int` `i = 1; i * i <= n; i++) {`   `            ``// If (i * i = n)` `            ``if` `((n % i == 0) && (n / i == i)) {` `                ``return` `true``;` `            ``}` `        ``}` `        ``return` `false``;` `    ``}`   `    ``public` `static` `void` `Main()` `    ``{`   `        ``int` `n = 36;`   `        ``if` `(isPerfectSquare(n))` `            ``Console.WriteLine(``"Yes"``);` `        ``else` `            ``Console.WriteLine(``"No"``);` `    ``}` `}` `/*This code is contributed by Rajput-Ji*/`

## PHP

 `

Output:

```Yes

```

Time Complexity : O(sqrt(N))
Method 2:
The idea is to use binary search to find a number in range 1 to n whose square is equal to n, such that at each iteration the problem statement reduces to half [1 to n/2-1 OR n/2 to n].

## C++

 `// CPP program for above approach` `#include ` `using` `namespace` `std;`   `// Program to find if x is a` `// perfect square.` `bool` `isPerfectSquare(``int` `x)` `{  ` `    ``long` `long` `left = 1, right = num;` `  `  `    ``while` `(left <= right) ` `    ``{` `        ``long` `long` `mid = (left + right) / 2;` `       `  `        ``// Check if mid is perfect square` `        ``if` `(mid * mid == num) ` `        ``{` `            ``return` `true``; ` `        ``}` `        `  `        ``// Mid is small -> go right to increase mid` `        ``if` `(mid * mid < num) ` `        ``{ ` `            ``left = mid + 1; ` `        ``}` `      `  `        ``// Mid is large -> to left to decrease mid` `        ``else` `        ``{` `            ``right = mid - 1; ` `        ``}` `    ``}` `    ``return` `false``;` `}`   `// Driver Code` `int` `main() ` `{` `    ``int` `x = 2500;` `  `  `    ``// Function Call` `    ``if` `(isPerfectSquare(x))` `        ``cout << ``"Yes"``;` `    ``else` `        ``cout << ``"No"``;` `    ``return` `0;` `}`

## Java

 `// Java program for above approach` `class` `GFG ` `{` `    `  `    ``// Program to find if x is a` `    ``// perfect square.` `    ``static` `boolean` `isPerfectSquare(``int` `num) ` `    ``{` `        ``long` `left = ``1``, right = num;` `        `  `        ``while` `(left <= right) ` `        ``{` `            ``long` `mid = (left + right) / ``2``;` `          `  `            ``// Check if mid is perfect square` `            ``if` `(mid * mid == num) ` `            ``{` `                ``return` `true``; ` `            ``}` `           `  `            ``// Mid is small -> go right to increase mid` `            ``if` `(mid * mid < num) ` `            ``{ ` `                ``left = mid + ``1``; ` `            ``}` `          `  `            ``// Mid is large -> to left to decrease mid` `            ``else` `            ``{` `                ``right = mid - ``1``;` `            ``}` `        ``}` `        ``return` `false``;` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `main(String[] args) ` `    ``{` `        ``int` `x = ``2500``;` `        `  `        ``// Function Call` `        ``if` `(isPerfectSquare(x))` `            ``System.out.print(``"Yes"``);` `        ``else` `            ``System.out.print(``"No"``);` `    ``}` `}`

## Python3

 `# Python program for above approach`   `# Program to find if x is a ` `# perfect square.` `def` `isPerfectSquare(x):`   `    ``left ``=` `1``, right ``=` `num;` `    `  `    ``while` `(left <``=` `right):` `      `  `        ``mid ``=` `(left ``+` `right) ``/` `2``;` `        `  `        ``# Check if mid is perfect square` `        ``if` `(mid ``*` `mid ``=``=` `num)` `            ``return` `true; ` `        `  `        ``# Mid is small -> go right to increase mid` `        ``if` `(mid ``*` `mid < num)` `            ``left ``=` `mid ``+` `1``; ` `          `  `        ``# Mid is large -> to left to decrease mid` `        ``else` `            ``right ``=` `mid ``-` `1``; ` `    ``return` `false;`   `# Driver code` `if` `__name__ ``=``=` `"__main__"``:` `  `  `  ``x ``=` `2500` `  `  `  ``# Function Call` `  ``if` `(isPerfectSquare(x)):` `      ``print``(``"Yes"``)` `  ``else``:` `      ``print``(``"No"``)`

## C#

 `// C# program for above approach` `using` `System;` `class` `GFG{` `    `  `// Program to find if x is a` `// perfect square.` `static` `bool` `isPerfectSquare(``int` `num) ` `{` `  ``long` `left = 1, right = num;`   `  ``while` `(left <= right) ` `  ``{` `    ``long` `mid = (left + right) / 2;`   `    ``// Check if mid is perfect ` `    ``// square` `    ``if` `(mid * mid == num) ` `    ``{` `      ``return` `true``; ` `    ``}`   `    ``// Mid is small -> go right to` `    ``// increase mid` `    ``if` `(mid * mid < num) ` `    ``{ ` `      ``left = mid + 1; ` `    ``}`   `    ``// Mid is large -> to left ` `    ``// to decrease mid` `    ``else` `    ``{` `      ``right = mid - 1;` `    ``}` `  ``}` `  ``return` `false``;` `}` `     `  `// Driver code` `public` `static` `void` `Main(``string``[] args) ` `{` `  ``int` `x = 2500;`   `  ``// Function Call` `  ``if` `(isPerfectSquare(x))` `    ``Console.Write(``"Yes"``);` `  ``else` `    ``Console.Write(``"No"``);` `}` `}`   `// This code is contributed by Rutvik_56`

Output:

```Yes

```

Time Complexity : O(log(N))

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.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.