Javascript - 백준 1124번

노종열·2022년 9월 4일
1
post-thumbnail
const input = require("fs").readFileSync("stdin").toString().trim();
const [A, B] = input.split(" ").map(Number);
let cnt = 0;

//소수를 구하는 함수 : 소인수분해를 먼저 하기 때문에 이렇게 구현함.
function isPrime(n) {
  if (n <= 1) return false;
  for (let i = 2; i < n; i++) {
    if (n % i === 0) {
      return false;
    }
  }
  return true;
}

//소인수분해
const primeFactors = (n) => {
  const answer = [];
  while (n % 2 === 0) {
    answer.push(2);
    n /= 2;
  }

  for (let i = 3; i * i <= n; i += 2) {
    while (n % i === 0) {
      answer.push(i);
      n /= i;
    }
  }
  if (n > 2) {
    answer.push(n);
  }
//구한 answer의 길이가 소수인지 파악하기 위해 len을 isPrime에 돌림
//그리고 true라면 cnt++을 해줌
  let len = answer.length;
  if (isPrime(len) === true) cnt++;
};

//주어진 A, B를 돌림 
for (let i = A; i <= B; i++) {
  primeFactors(i);
}
//답 출력
console.log(cnt);
profile
FE개발자 지향 중

0개의 댓글