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

JavaScript로 합이 n이 되는 세 개의 연속 자연수 찾기

문제 이해하기

숫자 n을 입력받아, 세 개의 연속된 자연수(소수나 실수가 아닌 정수)의 합이 정확히 n이 되는 경우가 존재하는지 확인하는 JavaScript 함수를 작성해야 합니다.

만약 그러한 숫자들이 존재한다면 함수는 해당 세 숫자를 반환하고, 존재하지 않는다면 false를 반환해야 합니다.

접근 방법

세 개의 연속된 자연수를 각각 x, x+1, x+2라고 표현할 수 있습니다. 이들의 합은 다음과 같습니다.

x + (x + 1) + (x + 2) = 3x + 3

따라서 해가 존재하려면 n은 반드시 3으로 나누어떨어져야 하며, 가장 작은 세 자연수의 합이 1+2+3=6이므로 n은 최소 6 이상이어야 합니다. 조건을 만족한다면 첫 번째 숫자는 (n - 3) / 3으로 계산할 수 있습니다.

예제 코드

이를 구현한 코드는 다음과 같습니다 −

const sum = 54;
const threeConsecutiveSum = sum => {
    if(sum < 6 || sum % 3 !== 0){
        return false;
    }
    // 세 숫자는 다음 형태를 가집니다:
    // x + (x + 1) + (x + 2) = 3 * x + 3
    const residue = sum - 3;
    const num = residue / 3;
    return [num, num+1, num+2];
};
console.log(threeConsecutiveSum(sum));

출력 결과

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

[ 17, 18, 19 ]

입력값이 54일 때, 54는 6보다 크고 3으로 나누어떨어지므로 해가 존재합니다. 실제로 17 + 18 + 19 = 54이며, 함수는 연속된 세 자연수 배열 [17, 18, 19]를 반환합니다. 만약 입력값이 6 미만이거나 3으로 나누어떨어지지 않는다면 함수는 false를 반환합니다.