Thursday, October 2, 2025
HomeLanguagesJavaJava Program to Find the Cube Root of a Given Number Using...

Java Program to Find the Cube Root of a Given Number Using Binary Search

Given a non-negative number find the cube root of a number using the binary search approach.

Examples :

Input: x = 27
Output: 3
Explanation:  The cube root of 16 is 4.

Input: x = 120
Output: 4
Explanation:  The cube root of 120 lies in between
4 and 5 so floor of the cube root is 4.

Naive Approach:

  • Check the cube of every element till n and store the answer till the cube is smaller or equal to the n

Java




// Java Program to Find the cube root
// of given number using Naive approach
import java.io.*;
class GFG {
    static int cuberoot(int n)
    {
        int ans = 0;
  
        for (int i = 1; i <= n; ++i) {
            // checking every number cube
            if (i * i * i <= n) {
                ans = i;
            }
        }
        return ans;
    }
    public static void main(String[] args)
    {
        // Number
        int number = 27;
        // Checking number
        int cuberoot = cuberoot(number);
        System.out.println(cuberoot);
    }
}


Output

3

Complexity:

SpaceComplexity: O(1)
TimeComplexity: O(n)

Efficient Approach (Binary Search): 

Binary Search used Divide and Conquer approach that makes the complexity is O(log n).

Algorithm:

  • Initialize left=0 and right =n
  • Calculate mid=left+(right-left)/2
  • If mid*mid*mid is equal to the number  return the mid
  • If mid*mid*mid is less than the number store the mid in ans and increase left=mid+1
  • If mid*mid*mid is more than the number and decrease the right=mid-1
  • Return the answer

Implementation:

Java




// Java Program to Find the cube root
// of given number using Binary Search
import java.io.*;
import java.util.*;
class GFG {
    // Function to find cuberoot
    static int cuberoot(int number)
    {
        // Lower bound
        int left = 1;
        // Upper bound
        int right = number;
  
        int ans = 0;
        while (left <= right) {
            // Finding the mid value
  
            int mid = left + (right - left) / 2;
            // Checking the mid value
            if (mid * mid * mid == number) {
                return mid;
            }
  
            // Shift the lower bound
            if (mid * mid * mid < number) {
                left = mid + 1;
                ans = mid;
            }
            // Shift the upper bound
            else {
                right = mid - 1;
            }
        }
        // Return the ans
        return ans;
    }
    public static void main(String[] args)
    {
        int number = 215;
        System.out.println(cuberoot(number));
    }
}


Output

5

Complexity:

SpaceComplexity: O(1)
TimeComplexity: O(log n)
RELATED ARTICLES

Most Popular

Dominic
32331 POSTS0 COMMENTS
Milvus
85 POSTS0 COMMENTS
Nango Kala
6703 POSTS0 COMMENTS
Nicole Veronica
11867 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11927 POSTS0 COMMENTS
Shaida Kate Naidoo
6818 POSTS0 COMMENTS
Ted Musemwa
7080 POSTS0 COMMENTS
Thapelo Manthata
6775 POSTS0 COMMENTS
Umr Jansen
6776 POSTS0 COMMENTS