Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자의 n제곱근을 계산하는 방법

JavaScript에는 n제곱근을 바로 구해 주는 내장 함수가 없습니다. 대신 Math.pow() 메서드에 지수로 1/n을 전달하면 원하는 n제곱근을 계산할 수 있으며, 부호 처리를 위해 Math.abs() 메서드를 함께 활용합니다.

n제곱근은 수학적으로 다음과 같이 표현됩니다.

x1/n

예를 들어 36의 2제곱근(제곱근)은 6, 49의 2제곱근은 7입니다.

예제

다음 예제는 n제곱근을 계산하는 함수 displayRoot()를 정의하고, 여러 숫자에 대해 결과를 출력합니다.

<html>
   <head>
      <title>Calculate root</title>
   </head>

   <body>
      <script>
         function displayRoot(x, num) {
            val = num % 2;
            if((val == 1) || x < 0)
            x = -x;
            var a, num;
            a = Math.pow(x, 1 / num);
            num = Math.pow(a, num);
            if(Math.abs(x - num) < 1 && (x > 0 === num > 0))
            return val ? -a : a;
         }
         document.write(displayRoot(36, 2));
         document.write("<br>"+displayRoot(49, 2));
         document.write("<br>"+displayRoot(36, -2));
         document.write("<br>"+displayRoot(216, -2));
      </script>
   </body>
</html>

출력 결과

6
7
0.16666666666666666
0.06804138174397717

코드 설명

함수가 동작하는 과정을 단계별로 살펴보면 다음과 같습니다.

  • 루트 차수 판별: num % 2로 루트의 차수(num)가 홀수인지 확인합니다. 차수가 홀수이거나 입력값 x가 음수이면 계산 전에 부호를 임시로 반전시킵니다.
  • n제곱근 계산: Math.pow(x, 1 / num)을 사용해 x의 num 제곱근을 구합니다.
  • 결과 검증: 구한 값을 다시 num 거듭제곱했을 때 원래 값과의 오차가 Math.abs() 기준 1 미만이고, 두 값의 부호가 일치하는 경우에만 유효한 결과로 판단합니다.
  • 부호 복원: 홀수 차수의 루트라면 음수 결과를 반환하고, 그렇지 않으면 양수 값을 그대로 반환합니다.

참고로 지수에 음수(-2)를 전달하면 역수 형태의 값, 즉 x-1/n이 계산됩니다. 위 예제에서 36의 -2제곱근이 1/6 ≈ 0.1667로 출력되는 이유입니다.