kakasoo

[node.js] 소인수분해 ( 백준 11653번 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 소인수분해 ( 백준 11653번 )

카카수(kakasoo) 2021. 4. 7. 20:55
반응형
// 백준 11653번 소인수분해를 풀었습니다.
const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

rl.on("line", (line) => {
    main(Number(line));
}).on("close", () => process.exit());

/**
 *
 * @param {string} line
 */
const main = (line) => {
    const numbers = new Array(line + 1).fill(false);
    const prime = [];
    for (let i = 2; i * i <= line; i++) {
        if (numbers[i] === false) {
            prime.push(i);
            for (let j = i * i; j <= line; j += i) {
                numbers[j] = true;
            }
        }
    }
    let temp = line;
    for (let i = 0; i < prime.length; i++) {
        while (temp % prime[i] === 0) {
            temp /= prime[i];
            console.log(prime[i]);
        }
    }
    if (temp > 1) {
        console.log(temp);
    }
};

소수를 구한 다음에 소인수분해로 이어진다. 간단한 문제였다.

반응형