치춘 2022. 2. 13. 13:01

소인수분해

문제

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

입력

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

출력

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

풀이

const prime = () => {
  let input = parseInt(
    require("fs").readFileSync("/dev/stdin").toString().trim()
  );
  let prime = 2;
  let ans = [];
  while (prime <= input) {
    if (!(input % prime)) {
      ans.push(prime);
      input /= prime;
    } else prime++;
  }
  console.log(ans.join("\n"));
};

prime();

반성회

inputprime으로 안 나눠질 때까지 나눴으므로 prime의 배수들은 !(input % prime) 조건을 만족하지 않는다