Check Cube Number in Java

Beginner
⏱️ 9 min read
📚 Updated: Aug 2026
🎯 3 Code Examples
🚀 Live Preview
Number theory

What You’ll Learn

A perfect cube is an integer n = k3 for some integer k. This tutorial covers float estimate + verify, pure integer search, binary search, a live preview, worked Java examples, edge cases, and complexity.

Definition

n = k³

Includes positive, negative, and zero values.

Estimate + Verify

Math.cbrt

Round the cube root, then check k * k * k == n.

Integer Scan

No float

Grow k until k³ ≥ |n|, then test equality.

Binary Search

O(log |n|)

Faster integer route for large magnitudes.

Live Preview

Try any n

Classify positive, negative, and zero instantly.

Float Pitfall

Always verify

Never trust a floating estimate alone.

Introduction

Perfect cubes (cube numbers) are integers of the form n = k3. Classic examples: 0, 1, 8, 27, 64 and negatives like -8, -27.

A practical check estimates an integer cube root, then verifies with exact integer multiplication. You can also avoid floating point entirely with a linear or binary search on k.

Why it matters?

It drills integer roots, sign handling, floating-point caution, and search-based number checks.

Key Highlights

Integer k Exists

n equals some integer cubed.

Verify Always

Final check: k * k * k == n.

Signs Matter

Odd powers keep negatives as cubes.

0 and 1 Count

Both are perfect cubes.

In short: find a candidate integer root k, then accept n only if k³ == n exactly.

📝 Problem & Approach

Given an integer n, decide whether n = k3 for some integer k.

java
// 27 = 3^3  → yes
// 28 sits between 3^3 and 4^3 → no
// -8 = (-2)^3 → yes

Inputs & Outputs

ItemTypeDescription
nintAny integer (positive, negative, or zero).
Return / printbool / texttrue if n is a perfect cube.

Minimal workflow

Pseudocode (integer route)
function isPerfectCube(n):
    x = Math.abs(n)
    k = 0
    while k * k * k < x:
        k = k + 1
    return k * k * k == x

Method comparison

MethodIdeaNotes
Root + verifyMath.cbrt(|n|), then k³ == nFast; watch float precision
Linear scanIncrement k until k³ ≥ |n|No float; O(|n|^(1/3))
Binary searchSearch k on [0, |n|]O(log |n|) integer route

⚡ Quick Reference

GoalPattern
Estimate rootk = Math.round(Math.cbrt(Math.abs(n)))
Apply signif (n < 0) k = -k;
Exact verifyk * k * k == n
Integer scanwhile (k * k * k < x) k++;
Classic yes27 = 3³, -8 = (-2)³
Classic no28 (between 27 and 64)

📋 Float Estimate vs Linear Scan vs Binary Search

Same yes/no answer — different precision and speed trade-offs.

Float estimate
round + verify

Short; must verify in integer arithmetic

Linear scan
grow k

No float; simple for interviews

Binary search
O(log |n|)

Best pure-integer route for large n

Interview tip
verify always

Say why floating estimate alone is unsafe

Context

When This Problem Shows Up

Reach for perfect-cube checks when integer roots and precision matter.

  1. Interview warm-ups

    Tests roots, signs, and float-vs-integer reasoning.

  2. Sibling of square checks

    Same pattern as perfect-square problems, with odd powers.

  3. Range / filter tasks

    List cubes in 1…N for small classroom ranges.

  4. Precision discussions

    Great prompt for “why verify after float math?”

  5. Not for float cubes alone

    Perfect-cube interviews usually mean integer n and integer k.

Key benefit: one short boolean check that covers roots, signs, float caution, and search complexity.

🔮 Live Preview

JavaScript safe integers. Uses integer scan on absolute value, then applies sign logic.

Try -8, 0, or 28.

Live result
Press “Check cube” to classify the number.

Examples Gallery

Three complete Java programs — float estimate + verify, integer range scan, and binary search. Click View Output to reveal sample console results.

📚 Getting Started

Estimate an integer root, then verify exactly.

Example 1 — Cube-Root Estimate + Integer Verification

Fast for one value. Round the floating cube root, then confirm with integer multiplication.

java
public class Main {
    static boolean isCube(int number) {
        long k = Math.round(Math.cbrt(Math.abs((long) number)));
        if (number < 0) {
            k = -k;
        }
        return k * k * k == number;
    }

    public static void main(String[] args) {
        int inputNumber = 27;
        if (isCube(inputNumber)) {
            System.out.println(inputNumber + " is a cube number.");
        } else {
            System.out.println(inputNumber + " is not a cube number.");
        }
    }
}

How It Works

The rounded root is only a candidate. The final check k * k * k == number is what guarantees correctness, including for negatives.

⚡ Pure Integer Range

No floating point — scan and filter a small interval.

Example 2 — Integer Scan: Cubes from 1 to 50

Grow k until k³ ≥ num; equality means a perfect cube.

java
public class Main {
    static boolean isCubeNumber(int num) {
        int k = 0;
        while ((long) k * k * k < num) {
            k++;
        }
        return (long) k * k * k == num;
    }

    public static void main(String[] args) {
        System.out.println("Cube numbers in the range 1 to 50:");
        for (int i = 1; i <= 50; i++) {
            if (isCubeNumber(i)) {
                System.out.print(i + " ");
            }
        }
    }
}

How It Works

The loop finds the smallest k with k³ ≥ num. From 1 to 50 the cubes are exactly 1, 8, and 27.

⚙️ Faster Integer Route

Binary search on k for large magnitudes.

Example 3 — Binary Search on Cube Root

Search k on [0, |n|] and verify equality; apply sign for negatives.

java
public class Main {
    static boolean isCubeBinary(int n) {
        long x = Math.abs((long) n);
        long lo = 0;
        long hi = x;
        while (lo <= hi) {
            long mid = (lo + hi) / 2;
            long cube = mid * mid * mid;
            if (cube == x) {
                return true;
            }
            if (cube < x) {
                lo = mid + 1;
            } else {
                hi = mid - 1;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int[] values = {27, 28, -8, 0, 64};
        for (int value : values) {
            System.out.println(value + ": " + (isCubeBinary(value) ? "cube" : "not a cube"));
        }
    }
}

How It Works

Because x ≥ 0, searching nonnegative k is enough; odd powers mean negatives are cubes whenever |n| is. Each step halves the search range — O(log |n|) comparisons.

🧠 How the Algorithm Decides

1

Take magnitude

Work with x = |n| (0 is immediately a cube).

Normalize
2

Find candidate k

Estimate with float, scan linearly, or binary-search.

Search
3

Cube and compare

Accept only if k * k * k equals |n| (then restore sign conceptually).

Verify
=

Yes or no

Equality → perfect cube; otherwise not.

🔎 Worked Walkthrough — n = 28

Trace the integer scan. Cubes nearby: 27 = 3³, 64 = 4³.

kCompare to 28Action
00< 28Increment
11< 28Increment
28< 28Increment
327< 28Increment
464> 28Stop; 64 ≠ 28

Final: 28 is not a perfect cube.

Use Cases

Where perfect-cube checks show up beyond the interview prompt.

1. Interview Warm-Ups

Roots, signs, and verify-after-estimate in one problem.

Example: write isCube(n).

2. Teaching Integer Powers

Makes 1, 8, 27, 64… memorable with counterexamples.

Example: chalkboard 27 vs 28.

3. Float Safety Lessons

Shows why estimates need an exact check.

Example: “is round enough?”

4. Range Filters

Print cubes in a classroom interval.

Example: 1 to 50 → 1 8 27.

5. Binary-Search Practice

Monotone k³ is a clean search predicate.

Example: find integer cube root.

6. Factorization Follow-Ups

Exponents divisible by 3 ↔ perfect cube.

Example: prime-factor argument.

Pro Tip: always say “estimate, then verify with integer cube” — that sentence scores well in interviews.

Advantages

Why this pattern works well in interviews and classwork.

  1. 1. Clear Definition

    n = k³ is easy to state and test.

  2. 2. Multiple Valid Methods

    Float estimate, linear scan, or binary search all work.

  3. 3. Tiny Extra Memory

    A few integers suffice — O(1) extra space.

  4. 4. Rich Edge Cases

    Negatives, zero, and float precision give structured follow-ups.

Pro Tip: prefer k * k * k over Math.pow(k, 3) in interviews when discussing overflow in fixed-width languages.

Usage Tips

Small habits that keep cube checks interview-ready.

  1. 1. Always Verify

    Never accept a floating estimate without k³ == n.

  2. 2. Handle Signs

    Negate k when n is negative for the estimate method.

  3. 3. Mention Zero

    0 = 0³ — include it in tests.

  4. 4. Spot-Check Classics

    Assert 27 and -8 are cubes; 28 is not.

  5. 5. Offer Binary Search

    Upgrade from linear scan when |n| can be huge.

Pro Tip: for the scan method, searching |n| is enough — odd powers make negatives automatic.

Common Pitfalls

Mistakes that commonly break perfect-cube solutions.

  1. 1. Trusting Float Alone

    Near-boundary roots can round wrong for large n.

    → Always verify with integer cubing.

  2. 2. Rejecting Negatives

    -8 and -27 are perfect cubes.

    → Preserve sign or search on absolute value.

  3. 3. Forgetting Zero

    0 = 0³ is a valid cube.

    → Include n = 0 in your tests.

  4. 4. Comparing to Float Cubes

    Checking Math.pow(root, 3) == n in float can fail.

    → Cubing must happen with integers.

  5. 5. Linear Scan on Huge n

    O(|n|^(1/3)) can be slow for large magnitudes.

    → Offer binary search as an upgrade.

Edge Cases

Check these inputs before calling the solution done.

Sign

Negative cubes

Negative perfect cubes exist (-8, -27). Preserve sign correctly.

Zero

n = 0

Always a cube because 0 = 0³.

Float

Precision limits

For very large magnitudes, floating-point root may be slightly off.

Near miss

28, 26

Neighbors of 27 are not cubes — good counterexamples.

One

n = 1

1 = 1³ — smallest positive cube.

Performance

Linear scan cost

Grows with |n|^(1/3). Use binary search if needed.

⚖️ Facts Worth Knowing

Handy follow-ups interviewers sometimes ask.

  • Prime factors. Nonzero n is a cube iff every exponent in its factorization is a multiple of 3.
  • Spacing. Cubes spread quickly: gaps grow like ~3k² between consecutive cubes.
  • Odd powers. Cubes (unlike squares) can be negative.
  • Monotone search. k ↦ k³ is strictly increasing for k ≥ 0 — binary search is valid.

🎯 Practice Problems

Try these variations to lock in the pattern.

1. Verify classics

  • 27, -8, 0, 1 → yes
  • 28, 9, -7 → no

2. Match methods

  • Estimate vs scan vs binary
  • Assert identical results

3. Range 1 to 200

  • List all perfect cubes
  • Expect 1, 8, 27, 64, 125

4. Return the root

  • If cube, return k
  • Else return None

Notes

  • Definition: n is a perfect cube if n = k³ for some integer k.
  • Methods: root estimate + integer verify, linear scan, or binary search.
  • Watch-outs: negatives, zero, and floating-point precision.
  • State O(1)-style estimate, O(|n|^(1/3)) scan, or O(log |n|) binary search.

Quick Takeaway: find a candidate integer k, then accept n only if k * k * k == n.

⏱️ Time and Space Complexity

MethodTimeExtra space
Root estimate + verifyO(1) styleO(1)
Linear integer scanO(|n|^(1/3))O(1)
Binary search on kO(log |n|)O(1)

For scan-based methods, n denotes input magnitude and root growth is about |n|^(1/3).

Wrap Up

🎉 Conclusion

A perfect cube is an integer n = k³. Estimate a root if you like, but always verify with exact integer cubing — or skip floats with a scan / binary search.

Practice the three examples above, then continue to decimal-to-binary for another classic conversion warm-up.

Handle negatives and zero, never trust float alone, and mention binary search for large |n|.

💡 Best Practices

✅ Do

  • Verify with integer cubing
  • Handle negatives and zero
  • Test 27, -8, and 28
  • Mention float precision risk
  • Offer binary search for large n

❌ Don’t

  • Trust Math.round(Math.cbrt(...)) alone
  • Reject negative cubes
  • Forget n = 0
  • Compare using float cubes
  • Ignore O(|n|^(1/3)) cost

Key Takeaways

Knowledge Unlocked

Five things to remember about cube numbers

Check perfect cubes the interview-friendly way.

5
Core concepts
= 02

Verify

k*k*k == n

Guard
03

Signs

Negatives OK

Math
0 04

Zero

0 is a cube

Edge
B 05

Speed

Binary O(log)

Analysis

❓ Frequently Asked Questions

An integer n is a perfect cube if n = k^3 for some integer k. Examples: 0 = 0^3, 1 = 1^3, 8 = 2^3, 27 = 3^3, -8 = (-2)^3.
Floating-point values can be close to an integer but not exact. The safe approach is: estimate k, then verify k*k*k == n in integer arithmetic.
Yes for very large values. For typical interview-sized integers, Math.round(Math.cbrt(Math.abs(n))) plus final integer verification is usually fine.
Yes. Use an integer loop (or binary search) to find k such that k^3 reaches |n|, then compare.
Yes. 0 = 0^3, so it is a perfect cube.
It runs in O(|n|^(1/3)) iterations because k grows until k^3 is at least |n|.
Yes. Odd powers preserve sign, so -8 = (-2)^3 is a perfect cube.
When |n| is huge and a linear scan of k would be too slow — binary search finds k in O(log |n|) steps.

Did you Know? 🔊

A nonzero integer n is a perfect cube iff in its prime factorization every exponent is a multiple of three. Also, 0 and 1 are perfect cubes.

Continue to Decimal to Binary

Learn how to convert decimal integers to binary with loops and built-ins.

Decimal to binary 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.

9 people found this page helpful