Check perfect square using addition/subtraction (original) (raw)
Last Updated : 23 Jul, 2025
Given a positive integer n, check if it is perfect square or not using only addition/subtraction operations and in minimum time complexity.
**Examples :
**Input : n = 36
**Output : Yes**Input : n = 2500
**Output : Yes
**Explanation: 2500 is a perfect square of 50**Input : n = 8
**Output : No
We can use the property of odd number for this purpose:
Addition of first n odd numbers is always perfect square
1 + 3 = 4,
1 + 3 + 5 = 9,
1 + 3 + 5 + 7 + 9 + 11 = 36 ...
Below is the implementation of above idea :
C++ `
// C++ program to check if n is perfect square // or not #include <bits/stdc++.h>
using namespace std;
// This function returns true if n is // perfect square, else false bool isPerfectSquare(int n) { // sum is sum of all odd numbers. i is // used one by one hold odd numbers for (int sum = 0, i = 1; sum < n; i += 2) { sum += i; if (sum == n) return true; } return false; }
// Driver code int main() { isPerfectSquare(35) ? cout << "Yes\n" : cout << "No\n"; isPerfectSquare(49) ? cout << "Yes\n" : cout << "No\n"; return 0; }
Java
// Java program to check if n // is perfect square or not
public class GFG {
// This function returns true if n
// is perfect square, else false
static boolean isPerfectSquare(int n)
{
// sum is sum of all odd numbers. i is
// used one by one hold odd numbers
for (int sum = 0, i = 1; sum < n; i += 2) {
sum += i;
if (sum == n)
return true;
}
return false;
}
// Driver Code
public static void main(String args[])
{
if (isPerfectSquare(35))
System.out.println("Yes");
else
System.out.println("NO");
if (isPerfectSquare(49))
System.out.println("Yes");
else
System.out.println("No");
}}
// This code is contributed by Sam007
Python
This function returns true if n is
perfect square, else false
def isPerfectSquare(n):
# the_sum is sum of all odd numbers. i is
# used one by one hold odd numbers
i = 1
the_sum = 0
while the_sum < n:
the_sum += i
if the_sum == n:
return True
i += 2
return FalseDriver code
if name == "main": print('Yes') if isPerfectSquare(35) else print('NO') print('Yes') if isPerfectSquare(49) else print('NO')
This code works only in Python 3
C#
// C# program to check if n // is perfect square or not using System;
public class GFG {
// This function returns true if n
// is perfect square, else false
static bool isPerfectSquare(int n)
{
// sum is sum of all odd numbers. i is
// used one by one hold odd numbers
for (int sum = 0, i = 1; sum < n; i += 2) {
sum += i;
if (sum == n)
return true;
}
return false;
}
// Driver Code
public static void Main(String[] args)
{
if (isPerfectSquare(35))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
if (isPerfectSquare(49))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}}
// This code is contributed by Sam007.
JavaScript
PHP
`
Output :
No Yes
**How does this work?
Below is explanation of above approach.
1 + 3 + 5 + ... (2n-1) = ∑(2i - 1) where 1<=i<=n = 2(∑(i) - ∑(1)) where 1<=i<=n = 2n(n+1)/2 - n = n(n+1) - n = n2
Check if given number is perfect square
Please refer the above article for all approaches and detailed explanation.