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

자바스크립트로 프로닉 수(Pronic Number) 판별하는 방법


프로닉 수(Pronic Number)란 두 개의 연속된 정수의 곱으로 표현되는 수를 말합니다. 즉, n(n + 1) 형태로 나타낼 수 있는 숫자입니다.

예를 들어 12는 3 × 4 = 12, 90은 9 × 10 = 90이므로 둘 다 프로닉 수입니다. 대표적인 프로닉 수로는 0, 2, 6, 12, 20, 30, 42, 56, 72, 90 등이 있습니다.

이번 글에서는 하나의 숫자를 입력받아 해당 숫자가 프로닉 수이면 true를, 아니면 false를 반환하는 자바스크립트 함수를 작성해 보겠습니다.

구현 로직

핵심 아이디어는 간단합니다. 프로닉 수 n(n + 1)은 항상 n²보다 크거나 같고 (n + 1)²보다 작기 때문에, 입력값의 제곱근 근처에서 시작해 연속된 두 정수의 곱이 입력값과 일치하는지 차례대로 확인하면 됩니다.

예제 코드

const num = 90;
const isPronic = num => {
    let nearestSqrt = Math.floor(Math.sqrt(num)) - 1;
    while(nearestSqrt * (nearestSqrt + 1) <= num){
        if(nearestSqrt * (nearestSqrt + 1) === num){
            return true;
        };
        nearestSqrt++;
    };
    return false;
};
console.log(isPronic(num));

코드 설명

  • Math.floor(Math.sqrt(num)) - 1: 입력값의 제곱근에서 1을 뺀 값을 탐색 시작점으로 설정합니다.
  • while 루프: 연속된 두 정수의 곱이 입력값 이하일 때까지 반복하며 일치 여부를 검사합니다.
  • 일치하는 곱을 찾으면 true를 반환하고, 끝까지 찾지 못하면 false를 반환합니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

true

90은 9 × 10으로 표현할 수 있으므로 isPronic 함수가 true를 반환한 것을 확인할 수 있습니다.