logo

Atrodiet skaitļa kubisko sakni

Izmēģiniet to GFG praksē ' title= #practicelinkdiv {displejs: nav! Svarīgs; }

Ņemot vērā skaitli n, atrodiet n kuba sakni.
Piemēri: 
 

  Input:    n = 3   Output:   Cubic Root is 1.442250   Input:   n = 8   Output:   Cubic Root is 2.000000


 

Ieteicamā prakse Skaitļa kuba sakne Izmēģiniet!


Mēs varam izmantot bināra meklēšana Apvidū Vispirms mēs definējam kļūdu e. Pieņemsim, ka mūsu gadījumā 0,0000001. Mūsu algoritma galvenie soļi skaitļa n kubiskās saknes aprēķināšanai ir: 
 



  1. Inicializējiet sākumu = 0 un beigas = n
  2. Aprēķiniet vidējo = (sākums + beigas)/2
  3. Pārbaudiet, vai absolūtā vērtība (n - vidus*vidusdaļa)< e. If this condition holds true then mid is our answer so return mid. 
     
  4. If (vidus*vidus*vidus)> n, tad iestatiet galu = vidū
  5. Ja (vidus*vidus*vidus)


Zemāk ir iepriekšminētās idejas ieviešana. 
 

lejupielādēt youtube video ar vlc
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 ndouble 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 %lfn'  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 ndouble 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
 // PHP program to find cubic root  // of a number using Binary Search // Returns the absolute value  // of n - mid * mid * mid function 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 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
<script> // Javascript program to find cubic root of a number // using Binary Search  // Returns the absolute value of n-mid*mid*mid  function 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  function cubicRoot(n)  {  // Set start and end for binary search  let start = 0 end = n;    // Set precision  let e = 0.0000001;    while (true)  {  let mid = (start + end)/2;  let 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    let n = 3;  document.write('Cube root of '+n+' is '+cubicRoot(n));   </script> 

Izlaide: 

Cubic root of 3.000000 is 1.442250


Laika sarežģītība: O (žurnāls)

Papildu telpa: O (1)