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

자바스크립트로 못생긴 숫자(Ugly Number) 판별하기

못생긴 숫자(Ugly Number)란?

십진수 체계에서 못생긴 숫자(Ugly Number)란 소인수가 오직 2, 3, 5뿐인 양의 정수를 의미합니다.

예를 들어, 1부터 10까지의 모든 정수는 못생긴 숫자에 해당하며, 12(= 2 × 2 × 3) 역시 소인수가 2와 3뿐이므로 못생긴 숫자입니다. 반면 14처럼 소인수로 7을 포함하는 수는 못생긴 숫자가 아닙니다.

판별 알고리즘

주어진 수가 못생긴 숫자인지 확인하는 방법은 매우 직관적입니다. 수를 2, 3, 5로 나눌 수 있는 동안 계속 나누어 주고, 그 과정을 거쳐 최종적으로 1이 되면 해당 수는 못생긴 숫자입니다. 만약 2, 3, 5 중 어느 것으로도 나누어 떨어지지 않는 값이 남는다면, 그 수에는 다른 소인수가 존재한다는 뜻이므로 못생긴 숫자가 아닙니다.

코드 구현

이제 위 로직을 자바스크립트 함수로 작성해 보겠습니다.

const num = 274;
const isUgly = num => {
    while(num !== 1){
       if(num % 2 === 0){
           num /= 2;
       } else if(num % 3 === 0) {
           num /= 3;
       } else if(num % 5 === 0) {
               num /= 5;
       } else {
           return false;
       };
    };
    return true;
};
console.log(isUgly(num));
console.log(isUgly(60));
console.log(isUgly(140));

실행 결과

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

false
true
false

결과 해석

- 274: 2 × 137이므로 소인수 137이 포함되어 있어 false를 반환합니다.
- 60: 2² × 3 × 5로 소인수가 2, 3, 5뿐이므로 true를 반환합니다.
- 140: 2² × 5 × 7로 소인수 7이 포함되어 있어 false를 반환합니다.

이처럼 while 루프와 조건문만으로도 못생긴 숫자 여부를 손쉽게 판별할 수 있습니다.