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

JavaScript로 숫자의 n제곱근(n번째 근)을 계산하는 방법

이 글에서는 숫자의 n제곱근(n번째 근)을 계산하여 그 결과를 반환하는 JavaScript 함수를 작성하는 방법을 알아봅니다.

n제곱근 계산의 핵심 원리

수학적으로 어떤 수 m의 n제곱근은 m^(1/n)으로 표현할 수 있습니다. JavaScript에서는 내장 함수인 Math.pow()를 활용해 손쉽게 구현할 수 있습니다.

다만 몇 가지 주의할 점이 있습니다.

  • 음수의 짝수 제곱근은 실수 범위에서 존재하지 않습니다.
  • 음수의 홀수 제곱근은 존재하므로, 이 경우 부호를 별도로 처리해야 합니다.
  • 부동소수점 연산 특성상 결과에 미세한 오차가 발생할 수 있으므로, 결과값을 다시 n제곱하여 원래 값과 비교하는 검증 과정을 거치는 것이 좋습니다.

구현 예제 코드

다음은 위 로직을 반영한 JavaScript 코드입니다.

const findNthRoot = (m, n) => {
  try {
    // 홀수 제곱근이면서 입력값이 음수일 경우 부호 처리
    let negate = n % 2 == 1 && m < 0;
    if(negate)
      m = -m;
    // m의 n제곱근 계산
    let possible = Math.pow(m, 1 / n);
    // 결과 검증: 다시 n제곱했을 때 원래 값과 일치하는지 확인
    n = Math.pow(possible, n);
    if(Math.abs(m - n) < 1 && (m > 0 == n > 0))
      return negate ? -possible : possible;
  } catch(e){
    return null;
  }
};
console.log(findNthRoot(45, 6));

코드 설명

  1. 부호 처리: n이 홀수이고 m이 음수라면, 우선 m의 절댓값에 대해 계산한 뒤 최종 결과에 음수 부호를 붙입니다.
  2. 제곱근 계산: Math.pow(m, 1 / n)를 사용하여 m의 n제곱근을 구합니다.
  3. 결과 검증: 계산된 값을 다시 n제곱하여 원래 값과의 차이가 1 미만인지 확인함으로써 유효한 결과인지 판별합니다.
  4. 예외 처리: 계산 도중 오류가 발생하면 null을 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

1.8859727740585395

즉, 45의 6제곱근은 약 1.886임을 확인할 수 있습니다. 실제로 1.8859727740585395를 6제곱하면 약 45가 되어 올바른 결과임을 알 수 있습니다.