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

JavaScript에서 숫자의 소인수 배열 구하는 방법

이 글에서는 숫자를 입력받아 해당 숫자를 정확히 나누어 떨어지게 하는 모든 소수, 즉 소인수를 배열 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다.

문제 이해하기

예를 들어, 입력값이 105라고 가정해 보겠습니다. 105는 3 × 5 × 7로 분해할 수 있으므로, 기대되는 출력 결과는 다음과 같습니다.

const output = [3, 5, 7];

구현 코드

이를 구현한 전체 코드는 다음과 같습니다.

const num = 105;
const isPrime = (n) => {
    for(let i = 2; i <= n/2; i++){
       if(n % i === 0){
          return false;
       }
    };
    return true;
};
const findPrimeFactors = num => {
    const res = num % 2 === 0 ? [2] : [];
    let start = 3;
    while(start <= num){
       if(num % start === 0){
          if(isPrime(start)){
             res.push(start);
          }
       }
       start++;
    };
    return res;
};
console.log(findPrimeFactors(num));

코드 동작 원리

1. isPrime — 소수 판별 함수

isPrime 함수는 주어진 숫자가 소수인지 판별합니다. 2부터 n/2까지의 값으로 차례대로 나눠 보고, 하나라도 나누어 떨어지면 약수가 존재하는 것이므로 false를 반환합니다. 끝까지 나누어 떨어지지 않는다면 소수이므로 true를 반환합니다.

2. findPrimeFactors — 소인수 추출 함수

findPrimeFactors 함수는 먼저 입력값이 짝수인지 확인하여 결과 배열을 초기화합니다. 짝수라면 2가 반드시 소인수이므로 [2]로 시작하고, 홀수라면 빈 배열로 시작합니다.

이후 3부터 입력값까지 반복하면서, 입력값을 나누어 떨어지게 하는 숫자 중 소수인 값만 골라 결과 배열에 추가합니다. 최종적으로 완성된 배열을 반환합니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

[3, 5, 7]