Find kubisk rod af et nummer

Find kubisk rod af et nummer
Prøv det på GFG -praksis #practicelinkDiv {display: ingen! Vigtigt; }

Givet et tal n Find terningens rod af n.
Eksempler: 
 

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


 

Anbefalet praksis Terning rod af et nummer Prøv det!


Vi kan bruge binær søgning . Først definerer vi fejl e. Lad os sige 0,0000001 i vores tilfælde. De vigtigste trin i vores algoritme til beregning af den kubiske rod til et tal N er: 
 



  1. Initialiser start = 0 og slut = n
  2. Beregn midt = (start + ende)/2
  3. Kontroller, om den absolutte værdi af (n - midt*midt*midt) < e. If this condition holds true then mid is our answer so return mid. 
     
  4. If (Mid*Mid*Mid)> n derefter indstille ende = Mid
  5. If (Mid*Mid*Mid)


Nedenfor er implementeringen af ​​ovenstående idé. 
 

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>   

Produktion: 

Cubic root of 3.000000 is 1.442250 


Tidskompleksitet: O(logn)

Hjælprum: O (1)
 


Top Artikler

Kategori

Interessante Artikler