Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자의 세제곱근 찾기

<시간/>

여기서 우리는 숫자의 3차 루트를 구하는 방법을 볼 것입니다. 숫자가 27이라고 가정하고 이 숫자의 세제곱근은 3입니다. 이 문제를 해결하기 위해 일부 라이브러리 함수를 사용하지 않고 자체 논리를 정의합니다. 우리는 이진 검색 접근 방식을 사용할 것입니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다.

임계값 =0.000001

과 같은 임계값이 있다고 가정합니다.
  • 왼쪽 값을 0으로 시작하고 오른쪽 값을 숫자로 시작

  • 중간 계산 :=(왼쪽 + 오른쪽)/2

  • (숫자 – mid3)의 절대값이 임계값보다 작으면 mid를 답으로 반환

  • mid3이 숫자보다 크면 오른쪽으로 설정 :=mid

  • mid3이 숫자보다 작으면 왼쪽으로 설정 :=mid

예시

#include<iostream>
#include<cmath>
using namespace std;
   double cubeRoot(int num) {
   double threshold = 0.000001;
   double left = 0, right = num;
   double mid;
   while(left <= right){
      mid = (left + right)/2;
      if(abs(num - (mid*mid*mid)) < threshold)
         return mid;
      if((mid*mid*mid) > num)
         right = mid;
      if((mid*mid*mid) < num)
         left = mid;
   }
}
int main() {
   int n = 3;
   cout << "cube root of 3 is: " << cubeRoot(n);
}

출력

cube root of 3 is: 1.44225