Find cubic root of a number
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
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:
- Initialize start = 0 and end = n
- Calculate mid = (start + end)/2
- Check if the absolute value of (n – mid*mid*mid) < e. If this condition holds true then mid is our answer so return mid.
- If (mid*mid*mid)>n then set end=mid
- If (mid*mid*mid)<n set start=mid.
Below is the implementation of above idea.
C++
#include <bits/stdc++.h>
using namespace std;
double diff( double n, double mid)
{
if (n > (mid*mid*mid))
return (n-(mid*mid*mid));
else
return ((mid*mid*mid) - n);
}
double cubicRoot( double n)
{
double start = 0, end = n;
double e = 0.0000001;
while ( true )
{
double mid = (start + end)/2;
double error = diff(n, mid);
if (error <= e)
return mid;
if ((mid*mid*mid) > n)
end = mid;
else
start = mid;
}
}
int main()
{
double n = 3;
printf ( "Cubic root of %lf is %lf\n" ,
n, cubicRoot(n));
return 0;
}
|
Java
import java.io.*;
class GFG
{
static double diff( double n, double mid)
{
if (n > (mid*mid*mid))
return (n-(mid*mid*mid));
else
return ((mid*mid*mid) - n);
}
static double cubicRoot( double n)
{
double start = 0 , end = n;
double e = 0.0000001 ;
while ( true )
{
double mid = (start + end)/ 2 ;
double error = diff(n, mid);
if (error <= e)
return mid;
if ((mid*mid*mid) > n)
end = mid;
else
start = mid;
}
}
public static void main (String[] args)
{
double n = 3 ;
System.out.println( "Cube root of " +n+ " is " +cubicRoot(n));
}
}
|
Python3
def diff(n, mid) :
if (n > (mid * mid * mid)) :
return (n - (mid * mid * mid))
else :
return ((mid * mid * mid) - n)
def cubicRoot(n) :
start = 0
end = n
e = 0.0000001
while ( True ) :
mid = (start + end) / 2
error = diff(n, mid)
if (error < = e) :
return mid
if ((mid * mid * mid) > n) :
end = mid
else :
start = mid
n = 3
print ( "Cubic root of" , n, "is" ,
round (cubicRoot(n), 6 ))
|
C#
using System;
class GFG {
static double diff( double n, double mid)
{
if (n > (mid * mid * mid))
return (n-(mid * mid * mid));
else
return ((mid * mid * mid) - n);
}
static double cubicRoot( double n)
{
double start = 0, end = n;
double e = 0.0000001;
while ( true )
{
double mid = (start + end) / 2;
double error = diff(n, mid);
if (error <= e)
return mid;
if ((mid * mid * mid) > n)
end = mid;
else
start = mid;
}
}
public static void Main ()
{
double n = 3;
Console.Write( "Cube root of " + n
+ " is " +cubicRoot(n));
}
}
|
PHP
<?php
function diff( $n , $mid )
{
if ( $n > ( $mid * $mid * $mid ))
return ( $n - ( $mid *
$mid * $mid ));
else
return (( $mid * $mid *
$mid ) - $n );
}
function cubicRoot( $n )
{
$start = 0;
$end = $n ;
$e = 0.0000001;
while (true)
{
$mid = (( $start + $end )/2);
$error = diff( $n , $mid );
if ( $error <= $e )
return $mid ;
if (( $mid * $mid * $mid ) > $n )
$end = $mid ;
else
$start = $mid ;
}
}
$n = 3;
echo ( "Cubic root of $n is " );
echo (cubicRoot( $n ));
?>
|
Javascript
<script>
function diff(n, mid)
{
if (n > (mid*mid*mid))
return (n-(mid*mid*mid));
else
return ((mid*mid*mid) - n);
}
function cubicRoot(n)
{
let start = 0, end = n;
let e = 0.0000001;
while ( true )
{
let mid = (start + end)/2;
let error = diff(n, mid);
if (error <= e)
return mid;
if ((mid*mid*mid) > n)
end = mid;
else
start = mid;
}
}
let n = 3;
document.write( "Cube root of " +n+ " is " +cubicRoot(n));
</script>
|
Output:
Cubic root of 3.000000 is 1.442250
Time Complexity: O(logn)
Auxiliary Space: O(1)
Last Updated :
01 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...