기본 수학 2. 3단계
11653번. 소인수분해
const fs = require("fs");
let input = Number(fs.readFileSync("/dev/stdin").toString());
// 소인수분해 = input을 소수인 인수로만 나눠 나가는 것
// 소인수 초기 설정
let divider = 2;
// input이 1이면 아무것도 출력하지않는다.
while(input != 1){
// input이 소인수로 나눠진다면
if(input % divider === 0) {
// 사용한 소인수 출력
console.log(divider);
// input을 소인수로 나눔
input /= divider;
// 해당 소인수로 다시 반복
} else {
// input이 해당 소인수로 나눠지지 않았다면
// 소인수를 1 증가시켜서 반복
divider++;
}
}
소인수분해는 결국 나눗셈, 곱셈의 연산을 활용하는 것이다.
예를 들어, 2가 여러번 곱해진 숫자라면 while문을 통해 최대한의 많이 2로 나눠낼 수 있다.
2로 더이상 나눠지지 않는 순간부터는 3으로 반복하고, 5로 반복하고...
4는 왜 포함이 안되느냐? 4는 2의 배수이기 때문에 2를 반복하던 부분해서 이미 다 처리된 상태이기 때문.
마찬가지 6,8,9,10...등등 숫자도 이런 식으로 무시 될 것이다.
결국, 소수만이 활용된다.
참고 사이트
이해가 쉬웠던 또 다른 풀이