백준 11653 소인수분해 [JavaScript]

김한주·2022년 12월 6일
0

문제

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

출력

N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.

예제 입력 1

72

예제 출력 1

2
2
2
3
3

예제 입력 2

9991

예제 출력 2

97
103

풀이

//N을 소인수분해하는 문제
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim();

//소인수분해: 1보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 
let N = parseInt(input);
let prime = [];     //소인수를 담을 배열
let count = 2;      //나눌 수

while(true){
    if(N % count == 0){
        prime.push(count);
        N = N/count;
        count = 1;      //count를 1로 초기화
    } 
    if(N === 1){
        break;
    }
    count++;
}
for(let i=0; i<prime.length; i++){
    console.log(prime[i]);
}

해설

2부터 숫자를 올려 나눠가면서 소인수분해를 하였다. 만약 입력받은 수 N이 나누어졌다면 N을 몫으로 재할당하였고 나누는 수인 count변수를 1로 바꾸어 다시 2부터 나눌 수 있게 하였다. 나누어진 수(소수)를 배열에 저장하여 출력하게 하였다.

profile
HANJUMON의 성장과정!

0개의 댓글