[백준 | Javascript] 11653

박기영·2022년 6월 28일
0

백준

목록 보기
64/127

기본 수학 2. 3단계
11653번. 소인수분해

문제

11653번 문제 링크

solution

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...등등 숫자도 이런 식으로 무시 될 것이다.
결국, 소수만이 활용된다.
참고 사이트
이해가 쉬웠던 또 다른 풀이

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글