숫자의 세제곱근 찾기
GfG Practice에서 사용해 보세요.
#practiceLinkDiv { 표시: 없음 !중요; }
#practiceLinkDiv { 표시: 없음 !중요; } 숫자 n이 주어지면 n의 세제곱근을 찾습니다.
예:
Input: n = 3 Output: Cubic Root is 1.442250 Input: n = 8 Output: Cubic Root is 2.000000
우리는 사용할 수 있습니다 이진 검색 . 먼저 오류 e를 정의합니다. 우리의 경우에는 0.0000001이라고 가정하겠습니다. 숫자 n의 세제곱근을 계산하는 알고리즘의 주요 단계는 다음과 같습니다.
- 시작 = 0 및 끝 = n 초기화
- mid = (start + end)/2 계산
- (n - mid*mid*mid)의 절대값이 있는지 확인하세요. < e. If this condition holds true then mid is our answer so return mid.
- (mid*mid*mid)>n이면 end=mid로 설정합니다.
- If (중*중*중)
아래는 위의 아이디어를 구현한 것입니다.
// 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>
산출:
Cubic root of 3.000000 is 1.442250
시간 복잡도: 오(로그)
보조 공간: 오(1)