Atrodiet skaitļa kubisko sakni

Atrodiet skaitļa kubisko sakni
Izmēģiniet to GFG praksē #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. 
 

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
      // 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)