치춘 2022. 2. 11. 01:30

소수 찾기

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

풀이

const prime = () => {
  let input = require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .trim()
    .split("\n")[1]
    .split(" ")
    .map(Number);
  let eratos = Array.from({ length: 1001 }, (n, i) => (i === 1 ? false : true));
  for (let i = 2; i < 38; i++) {
    if (eratos[i]) for (let j = 2; j < 501; j++) eratos[i * j] = false;
  }
  let ans = 0;
  for (let i of input) if (eratos[i]) ans++;
  console.log(ans);
};

prime();

반성회

처음엔 ans를 배열로 선언하고 eratos[i]true일 경우 ansipush해서 마지막에 ans.length를 출력했는데 계속 틀렸습니다 나와서 그냥 ans++해주는 식으로 개수 셌더니 맞았다

이유를모르겠네