# Find cubic root of a number

• Difficulty Level : Medium
• Last Updated : 28 Jun, 2021

Given a number n, find the cube root of n.
Examples:

```Input:  n = 3
Output: Cubic Root is 1.442250

Input: n = 8
Output: Cubic Root is 2.000000```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

We can use binary search. First we define error e. Let us say 0.0000001 in our case. The main steps of our algorithm for calculating the cubic root of a number n are:

1. Initialize start = 0 and end = n
2. Calculate mid = (start + end)/2
3. Check if the absolute value of (n – mid*mid*mid) < e. If this condition holds true then mid is our answer so return mid.

4. If (mid*mid*mid)>n then set end=mid
5. If (mid*mid*mid)<n set start=mid.

Below is the implementation of above idea.

## C++

 `// C++ program to find cubic root of a number``// using Binary Search``#include ``using` `namespace` `std;` `// Returns the absolute value of n-mid*mid*mid``double` `diff(``double` `n,``double` `mid)``{``    ``if` `(n > (mid*mid*mid))``        ``return` `(n-(mid*mid*mid));``    ``else``        ``return` `((mid*mid*mid) - n);``}` `// Returns cube root of a no n``double` `cubicRoot(``double` `n)``{``    ``// Set start and end for binary search``    ``double` `start = 0, end = n;` `    ``// Set precision``    ``double` `e = 0.0000001;` `    ``while` `(``true``)``    ``{``        ``double` `mid = (start + end)/2;``        ``double` `error = diff(n, mid);` `        ``// If error is less than e then mid is``        ``// our answer so return mid``        ``if` `(error <= e)``            ``return` `mid;` `        ``// If mid*mid*mid is greater than n set``        ``// end = mid``        ``if` `((mid*mid*mid) > n)``            ``end = mid;` `        ``// If mid*mid*mid is less than n set``        ``// start = mid``        ``else``            ``start = mid;``    ``}``}` `// Driver code``int` `main()``{``    ``double` `n = 3;``    ``printf``(``"Cubic root of %lf is %lf\n"``,``           ``n, cubicRoot(n));``    ``return` `0;``}`

## Java

 `// Java program to find cubic root of a number``// using Binary Search``import` `java.io.*;` `class` `GFG``{``    ``// Returns the absolute value of n-mid*mid*mid``    ``static` `double` `diff(``double` `n,``double` `mid)``    ``{``        ``if` `(n > (mid*mid*mid))``            ``return` `(n-(mid*mid*mid));``        ``else``            ``return` `((mid*mid*mid) - n);``    ``}``    ` `    ``// Returns cube root of a no n``    ``static` `double` `cubicRoot(``double` `n)``    ``{``        ``// Set start and end for binary search``        ``double` `start = ``0``, end = n;`` ` `        ``// Set precision``        ``double` `e = ``0.0000001``;`` ` `        ``while` `(``true``)``        ``{``            ``double` `mid = (start + end)/``2``;``            ``double` `error = diff(n, mid);`` ` `            ``// If error is less than e then mid is``            ``// our answer so return mid``            ``if` `(error <= e)``                ``return` `mid;`` ` `            ``// If mid*mid*mid is greater than n set``            ``// end = mid``            ``if` `((mid*mid*mid) > n)``                ``end = mid;`` ` `            ``// If mid*mid*mid is less than n set``            ``// start = mid``            ``else``                ``start = mid;``        ``}``    ``}``    ` `    ``// Driver program to test above function``    ``public` `static` `void` `main (String[] args)``    ``{``        ``double` `n = ``3``;``        ``System.out.println(``"Cube root of "``+n+``" is "``+cubicRoot(n));``    ``}``}` `// This code is contributed by Pramod Kumar`

## Python3

 `# Python 3 program to find cubic root``# of a number using Binary Search` `# Returns the absolute value of``# n-mid*mid*mid``def` `diff(n, mid) :``    ``if` `(n > (mid ``*` `mid ``*` `mid)) :``        ``return` `(n ``-` `(mid ``*` `mid ``*` `mid))``    ``else` `:``        ``return` `((mid ``*` `mid ``*` `mid) ``-` `n)``        ` `# Returns cube root of a no n``def` `cubicRoot(n) :``    ` `    ``# Set start and end for binary``    ``# search``    ``start ``=` `0``    ``end ``=` `n``    ` `    ``# Set precision``    ``e ``=` `0.0000001``    ``while` `(``True``) :``        ` `        ``mid ``=` `(start ``+` `end) ``/` `2``        ``error ``=` `diff(n, mid)` `        ``# If error is less than e``        ``# then mid is our answer``        ``# so return mid``        ``if` `(error <``=` `e) :``            ``return` `mid``            ` `        ``# If mid*mid*mid is greater``        ``# than n set end = mid``        ``if` `((mid ``*` `mid ``*` `mid) > n) :``            ``end ``=` `mid``            ` `        ``# If mid*mid*mid is less``        ``# than n set start = mid``        ``else` `:``            ``start ``=` `mid``            ` `# Driver code``n ``=` `3``print``(``"Cubic root of"``, n, ``"is"``,``      ``round``(cubicRoot(n),``6``))`  `# This code is contributed by Nikita Tiwari.`

## C#

 `// C# program to find cubic root``// of a number using Binary Search``using` `System;` `class` `GFG {``    ` `    ``// Returns the absolute value``    ``// of n - mid * mid * mid``    ``static` `double` `diff(``double` `n, ``double` `mid)``    ``{``        ``if` `(n > (mid * mid * mid))``            ``return` `(n-(mid * mid * mid));``        ``else``            ``return` `((mid * mid * mid) - n);``    ``}``    ` `    ``// Returns cube root of a no. n``    ``static` `double` `cubicRoot(``double` `n)``    ``{``        ` `        ``// Set start and end for``        ``// binary search``        ``double` `start = 0, end = n;` `        ``// Set precision``        ``double` `e = 0.0000001;` `        ``while` `(``true``)``        ``{``            ``double` `mid = (start + end) / 2;``            ``double` `error = diff(n, mid);` `            ``// If error is less than e then``            ``// mid is our answer so return mid``            ``if` `(error <= e)``                ``return` `mid;` `            ``// If mid * mid * mid is greater``            ``// than n set end = mid``            ``if` `((mid * mid * mid) > n)``                ``end = mid;` `            ``// If mid*mid*mid is less than``            ``// n set start = mid``            ``else``                ``start = mid;``        ``}``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `Main ()``    ``{``        ``double` `n = 3;``        ``Console.Write(``"Cube root of "``+ n``                       ``+ ``" is "``+cubicRoot(n));``    ``}``}` `// This code is contributed by nitin mittal.`

## PHP

 ` (``\$mid` `* ``\$mid` `* ``\$mid``))``        ``return` `(``\$n` `- (``\$mid` `*``                ``\$mid` `* ``\$mid``));``    ``else``        ``return` `((``\$mid` `* ``\$mid` `*``                 ``\$mid``) - ``\$n``);``}` `// Returns cube root of a no n``function` `cubicRoot(``\$n``)``{``    ` `    ``// Set start and end``    ``// for binary search``    ``\$start` `= 0;``    ``\$end` `= ``\$n``;` `    ``// Set precision``    ``\$e` `= 0.0000001;` `    ``while` `(true)``    ``{``        ``\$mid` `= ((``\$start` `+ ``\$end``)/2);``        ``\$error` `= diff(``\$n``, ``\$mid``);` `        ``// If error is less``        ``// than e then mid is``        ``// our answer so return mid``        ``if` `(``\$error` `<= ``\$e``)``            ``return` `\$mid``;` `        ``// If mid*mid*mid is``        ``// greater than n set``        ``// end = mid``        ``if` `((``\$mid` `* ``\$mid` `* ``\$mid``) > ``\$n``)``            ``\$end` `= ``\$mid``;` `        ``// If mid*mid*mid is``        ``// less than n set``        ``// start = mid``        ``else``            ``\$start` `= ``\$mid``;``    ``}``}` `    ``// Driver Code``    ``\$n` `= 3;``    ``echo``(``"Cubic root of \$n is "``);``    ``echo``(cubicRoot(``\$n``));` `// This code is contributed by nitin mittal.``?>`

## Javascript

 ``

Output:

`Cubic root of 3.000000 is 1.442250`

Time Complexity : O(Log n)