Python Perfect Square Program

Beginner
5 min read
Updated: Oct 2026
2 programs
Live preview

What Is a Perfect Square?

A non-negative integer is a perfect square when it equals some integer k multiplied by itself: n = k × k.

Remember
n is a perfect square  ⇔  ∃ integer k ≥ 0 such that k² = n

Examples:
   0 = 0²
   1 = 1²
   9 = 3²
  16 = 4²
  10 → no integer square root
n√n ideaPerfect square?
164 × 4Yes
255 × 5Yes
10between 3² and 4²No
00 × 0Yes

How to Check a Perfect Square in Python

Four clear steps — then pick an integer loop or an isqrt-and-verify check.

  1. Reject negatives (this tutorial treats only n >= 0).
  2. Try candidate roots i = 0, 1, 2, … while i * i <= n.
  3. If some i * i == n, return true; if you pass n, return false.
  4. Or compute root = math.isqrt(n) and verify root * root == n.
MethodIdeaTimeBest for
Integer loopCompare i * i with nO(√n)Interviews without floating point
isqrt + verifySquare the integer root backO(1)Short production-style checks

Pseudocode

Pseudocode
function is_perfect_square(n):
    if n < 0: return false

    i = 0
    while i * i <= n:
        if i * i == n:
            return true
        i = i + 1

    return false

Cheat Sheet

Keep these facts handy while writing the program.

TopicDetail
Definitionn = k² for some integer k ≥ 0
Zero0 is a perfect square
NegativesNot perfect squares here
Loop stopWhile i * i <= n
isqrt verifyroot * root == n
Classic checks16 yes; 10 no; 25 yes

Live Preview

Enter an integer to see the nearest integer root and the perfect-square check.

Whole numbers only. Negatives are not perfect squares here. Tap a chip or type a value.

Result
n = 16
root = 4
4 × 4 = 16
16 is a perfect square

Worked Walkthrough — n = 16

Try successive integer squares until you match or pass 16.

Calculation
i = 0 → 0² = 0
i = 1 → 1² = 1
i = 2 → 2² = 4
i = 3 → 3² = 9
i = 4 → 4² = 16  ← equal to n

16 is a perfect square

isqrt path:
  math.isqrt(16) = 4
  4 * 4 == 16 → same answer

Python Programs

Start with the integer loop so you never rely on floating point. Use isqrt-and-verify when you want a short, clear check.

Example 1 — Integer Loop

Increase i while i * i <= n and look for an exact match.

python
def is_perfect_square(n):
    if n < 0:
        return False

    i = 0
    while i * i <= n:
        if i * i == n:
            return True
        i += 1

    return False


number = 16
if is_perfect_square(number):
    print(f"{number} is a perfect square")
else:
    print(f"{number} is not a perfect square")

How It Works

  1. Negatives return False immediately.
  2. The loop condition i * i <= n stops once squares go past n.
  3. Each step checks whether i * i equals n.
  4. For 16, i = 4 matches and the function returns True.
  5. If no match appears before the loop ends, the answer is False.

Example 2 — isqrt + Verify

Take the integer square root, then square it back to confirm an exact match.

python
import math


def is_perfect_square(n):
    if n < 0:
        return False

    root = math.isqrt(n)
    return root * root == n


print(is_perfect_square(16))  # True
print(is_perfect_square(10))  # False
print(is_perfect_square(0))   # True
print(is_perfect_square(-4))  # False

How It Works

  1. Same non-negative rule as Example 1.
  2. math.isqrt(n) returns the largest integer root with root * root <= n.
  3. Squaring root again and comparing with n confirms an exact square.
  4. For 10, root is 3 and 9 != 10, so the result is false.
  5. Prefer this over math.sqrt so you stay in integers end to end.

Edge Cases & Pitfalls

Check these before calling the solution done.

0

Zero counts

0 = 0². Do not special-case it as false.

Negatives

Not squares here

Return False for n < 0 in this beginner definition.

Floats

Avoid bare math.sqrt

If you use math.sqrt, always verify by squaring the truncated root. Prefer math.isqrt.

isqrt

Always verify

isqrt alone gives a floor root — square it back to confirm equality.

Time and Space Complexity

ProgramTimeExtra space
Integer loopO(√n)O(1)
isqrt + verifyO(1)O(1)

Both are fine for interviews. Prefer the loop when you must avoid library math discussion.

Key Takeaways

  • Definition: n = k² for some integer k ≥ 0.
  • Loop: test i * i while i * i <= n.
  • isqrt: then verify root * root == n.
  • Test set: 0 → yes; 16 → yes; 10 → no; -4 → no.

One line: find an integer root whose square equals n — by looping or by verifying math.isqrt.

Frequently Asked Questions

A non-negative integer that equals some integer multiplied by itself. Examples: 0, 1, 4, 9, 16, 25.
Loop with i*i until you match or pass n, or take math.isqrt(n) and verify root*root == n.
Yes. 0 = 0 × 0.
isqrt returns an exact integer floor root. If you use math.sqrt, always square the truncated root back and compare — never trust the float alone.
A loop up to √n is O(√n). The isqrt-and-verify method is O(1) for practical interview sizes (constant-time math call plus a few ops).

Next: Power of 2

Check whether a number is a power of two.

Power of 2 tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

6 people found this page helpful