logo

Keressen egy szám köbös gyökerét

Próbálja ki a GFG gyakorlaton ' title= #PracticeLinkDiv {Display: Nincs! Fontos; }

Adva egy n számot, keresse meg az n kocka gyökerét.
Példák: 
 

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


 



Ajánlott gyakorlat Egy szám kocka gyökere Próbáld ki!


Használhatunk bináris keresés - Először definiáljuk az E hibát. Tegyük fel, hogy a mi esetünkben 0,0000001. Algoritmusunk fő lépései az n szám köbös gyökérének kiszámításához: 
 

  1. Inicializálja a start = 0 és a vég = n
  2. Számítsa ki a közepét = (Start + End)/2
  3. Ellenőrizze, hogy a (n - közepe*közepén*közepén) abszolút értéke< e. If this condition holds true then mid is our answer so return mid. 
     
  4. If (közepén*közepén*közepén)> n Ezután állítsa be a végét = közepe
  5. If (*közepén**közepén)


Az alábbiakban bemutatjuk a fenti ötlet megvalósítását. 
 

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> 

Kimenet: 



Cubic root of 3.000000 is 1.442250


Idő bonyolultsága: O (napló)

Kiegészítő hely: O (1)