반응형
출처
https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. (1 ≤ N ≤ 10,000,000)
풀이
이 문제는 입력받은 수를 바탕으로 소인수분해한 것을 출력하는 문제이다. 나는 이 문제를 풀기 위하여 먼저 전에 썼던 방식대로 1부터 인풋까지의
소수를 뽑아내서 인풋을 소수로 하나씩 대입하며 나누는 방식으로 접근하였다.
하지만 굳이 그럴필요 없이 2부터 하나씩 증가하면서 나눠주면 되었다.
요약
- while문을 돌면서 input을 devide로 나눔.
- 나눠질 경우 devide를 2로 초기화.
- 안나눠질경우 2가 인수가 아니라는것, devide를 1씩증가.
- 다 나눠서 input이 1이 된다면 반복문 탈출.
코드
const fs = require('fs');
let input = Number(fs.readFileSync('/dev/stdin').toString());
let devide = 2;
while (input > 1) {
if (input % devide === 0) {
input /= devide;
console.log(devide);
devide = 2;
} else {
devide++;
}
}
반응형
댓글