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

자바스크립트로 디사리움(Disarium) 수 판별하기

디사리움(Disarium) 수란?

디사리움 수는 각 자릿수를 자신의 위치에 해당하는 지수만큼 거듭제곱한 뒤 모두 더했을 때, 그 합이 원래 수 자신과 같아지는 수입니다. 공식으로 표현하면 다음과 같습니다.

xy...z = x^1 + y^2 + ... + z^n

여기서 n은 해당 숫자의 총 자릿수입니다.

예시

175가 대표적인 디사리움 수입니다.

175 = 1^1 + 7^2 + 5^3 = 1 + 49 + 125 = 175

각 자릿수인 1, 7, 5를 각각 1제곱, 2제곱, 3제곱한 후 더하면 175가 되므로, 175는 디사리움 수라고 할 수 있습니다.

자바스크립트 구현 코드

숫자를 문자열로 변환한 뒤 각 자릿수를 분리하고, reduce 메서드로 위치 기반 거듭제곱의 합을 계산하는 방식으로 손쉽게 구현할 수 있습니다.

const num = 175;
const isDisarium = num => {
   const res = String(num)
   .split("")
   .reduce((acc, val, ind) => {
      acc += Math.pow(+val, ind+1);
      return acc;
   }, 0);
   return res === num;
};
console.log(isDisarium(num));
console.log(isDisarium(32));
console.log(isDisarium(4334));

코드 작동 방식

String(num)으로 숫자를 문자열로 변환하고, split("")으로 한 글자씩 배열로 나눕니다. 이후 reduce()를 사용해 각 자릿수를 (인덱스 + 1)번째 거듭제곱하여 누적합을 계산합니다. 마지막으로 계산된 결과가 원래 숫자와 일치하는지 비교하여 true 또는 false를 반환합니다.

실행 결과

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

true
false
false

175는 디사리움 수 조건을 만족하므로 true가 출력되고, 32와 4334는 조건을 만족하지 않기 때문에 false가 출력됩니다.