정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
72
2
2
2
3
3
9991
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부터 나눌 수 있게 하였다. 나누어진 수(소수)를 배열에 저장하여 출력하게 하였다.