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

JavaScript로 세 개의 연속된 자연수의 합 확인하기

이번 글에서는 하나의 숫자 n을 입력받아, 세 개의 연속된 자연수(소수나 실수가 아닌 정수)의 합이 n과 같아지는 경우가 존재하는지 확인하는 JavaScript 함수를 작성해 보겠습니다.

조건을 만족하는 세 개의 연속된 자연수가 존재하면 함수는 해당 숫자들을 반환하고, 그렇지 않다면 false를 반환하도록 구현합니다.

접근 방법

세 개의 연속된 자연수를 x, x+1, x+2라고 가정하면 이들의 합은 다음과 같습니다.

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

즉, 세 개의 연속된 자연수의 합은 반드시 3의 배수여야 합니다. 또한 가능한 최솟값은 1 + 2 + 3 = 6이므로, n이 6보다 작거나 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는 17 + 18 + 19의 합과 같으므로, 함수는 세 개의 연속된 자연수 배열 [17, 18, 19]를 반환합니다. 만약 입력값이 7처럼 3의 배수가 아니거나 6 미만이라면 false가 출력됩니다.