A cube number (perfect cube) is an integer n that equals k3 for some integer k. Both 0 and negative cubes count.
Remember
n is a cube number ⇔ n = k × k × k for some integer k
Examples:
0 = 0³
1 = 1³
8 = 2³
27 = 3³
−8 = (−2)³
10 → not a cube
k
k³
Cube?
0
0
Yes
2
8
Yes
3
27
Yes
—
10
No
First non-negative cubes
List
0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000
Approach
How to Check a Cube Number in C++
Four clear steps — then pick an integer scan or a cube-root check.
Work with |n| if you want a nonnegative search (re-apply the sign for negatives).
Find an integer k whose cube might equal the value.
Verify with exact integer multiplication: k * k * k == n.
Never trust a floating-point cube root alone — always verify.
Method
Idea
Time
Best for
Integer scan
Increase k while k³ <= |n|
O(∛|n|)
Interviews, no floating point
cbrt + verify
Round std::cbrt, then check k³ == n
O(1)
Quick answers, typical int sizes
Pseudocode
Pseudocode
function IsCube(n):
target = abs(n)
k = 0
while k * k * k < target:
k = k + 1
if k * k * k != target:
return false
// For negatives, k itself can be treated as signed later
return true
Reference
Cheat Sheet
Keep these facts handy while writing the program.
Topic
Detail
Definition
n = k³ for some integer k
Always cubes
0, 1, −1
Verify
Use integer k * k * k == n
Avoid
Trusting std::cbrt without a re-check
Overflow tip
Use long long for the product when |n| is large
Classic check
27 → yes (3³); 10 → no
Try it
Live Preview
Enter any integer to see whether it is a perfect cube and which k produces it.
Whole numbers (capped at ±999999999). Tap a chip or type a value.
Result
n = 27
k = 3
Check: 3 × 3 × 3 = 27
Verdict: CUBE NUMBER
Trace
Worked Walkthrough — n = 27
Increase k until its cube reaches or passes 27, then compare exactly.
Calculation
k = 0 → 0³ = 0 < 27
k = 1 → 1³ = 1 < 27
k = 2 → 2³ = 8 < 27
k = 3 → 3³ = 27 = 27 ✓
Result: 27 is a cube number (k = 3)
Code
C++ Programs
Start with a pure integer scan. Then use std::cbrt with an integer verification for a short production-style check.
Example 1 — Integer Scan
Walk k upward until k³ meets or passes |n|, then compare.
C++
#include <iostream>
#include <cstdlib>
bool isCube(int n) {
long long target = std::llabs(static_cast<long long>(n));
long long k = 0;
while (k * k * k < target) {
k++;
}
return k * k * k == target;
}
int main() {
int number = 27;
if (isCube(number)) {
std::cout << number << " is a cube number.\n";
} else {
std::cout << number << " is not a cube number.\n";
}
return 0;
}
Output
27 is a cube number.
How It Works
Store |n| in a long long so cubing stays safe for large values.
Start k at 0 and increase while k³ < target.
When the loop stops, either k³ == target (cube) or k³ > target (not a cube).
Negatives work because cubing preserves sign — matching on absolute value is enough.
For 27, the loop lands on k = 3 and confirms 27.
Example 2 — std::cbrt + Verify
Estimate the cube root, round to the nearest integer, then re-check with exact multiplication.
C++
#include <iostream>
#include <cmath>
#include <cstdlib>
bool isCubeFast(int n) {
long long target = std::llabs(static_cast<long long>(n));
long long k = static_cast<long long>(std::llround(std::cbrt(static_cast<double>(target))));
return k * k * k == target;
}
int main() {
std::cout << std::boolalpha;
std::cout << isCubeFast(27) << "\n"; // true
std::cout << isCubeFast(10) << "\n"; // false
std::cout << isCubeFast(-8) << "\n"; // true
return 0;
}
Output
true
false
true
How It Works
std::cbrt gives an approximate real cube root of |n|.
std::llround picks the nearest integer candidate k.
The decisive step is integer: k * k * k == target. That removes floating-point doubt.
If the rounded guess is wrong, the product will not match and the method returns false.
Checks: 27 and −8 are cubes; 10 is not.
Edge Cases & Pitfalls
Check these before calling the solution done.
0 and 1
Valid cubes
0 = 0³ and 1 = 1³. Do not special-case them as false.
Negatives
Odd power keeps sign
−8 is a cube. Compare against |n|, or cube a signed k.
Float only
Always verify
Rounding alone can misclassify. Finish with k * k * k == n.
Overflow
Prefer long long
Cubing an int near the edge can overflow. Multiply in long long.
Analysis
Time and Space Complexity
Program
Time
Extra space
Integer scan
O(∛|n|)
O(1)
cbrt + verify
O(1)
O(1)
Remember
Key Takeaways
Definition:n is a cube when n = k³ for an integer k.
Verify in integers: never stop at a floating-point guess.
Two options: scan k, or round cbrt and re-check.
Test set: 0, 8, 27, −8 true; 10 false.
One line: find integer k such that k × k × k equals n.
Frequently Asked Questions
An integer n is a perfect cube when n = k³ for some integer k. Examples: 0 = 0³, 1 = 1³, 8 = 2³, 27 = 3³, and −8 = (−2)³.
Search for an integer k such that k * k * k equals n, or estimate the cube root with cbrt and verify the cube in integer arithmetic.
Yes. 0 = 0³, so it is a perfect cube.
Yes. Cubing preserves sign, so −8 = (−2)³ is a perfect cube.
An integer scan up to the cube root is O(∛|n|). Rounding cbrt and verifying is effectively O(1) for fixed-size integers.