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 False

Driver 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

sum=0,sum = 0, sum=0,i = 1; sum<sum < sum<n; $i += 2) { sum+=sum += sum+=i; if ($sum == $n) return true; } return false; } // Driver code if(isPerfectSquare(35)) echo "Yes\n"; else echo "No\n"; if(isPerfectSquare(49)) echo "Yes\n"; else echo "No\n"; // This code is contributed by ajit. ?>

`

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.