소수 찾기
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.
4
1 3 5 7
3
// readline 모듈을 사용하기 위해 필요한 require 구문
const readline = require("readline");
// readline 인터페이스 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
// 주어진 숫자가 소수인지 판별하는 화살표 함수
const isPrime = (num) => {
if (num <= 1) return false; // 숫자가 1 이하일 경우 소수가 아님
for (let i = 2; i <= Math.sqrt(num); i++) {
// num의 제곱근까지만 반복문 실행
if (num % i === 0) return false; // i로 나누어 떨어진다면 소수가 아님
}
return true; // 반복문에서 걸리지 않은 경우 소수임
};
// 라인을 읽을 때마다 실행되는 이벤트 리스너
rl.on("line", (line) => {
const input = line.split(" ").map(Number); // 입력받은 문자열을 공백을 기준으로 분리하고 숫자로 변환
if (input.length === 1) return; // 숫자의 개수를 나타내는 첫 번째 입력이면 무시하고 리턴
const primeCount = input.filter(isPrime).length; // 배열에서 소수만 필터링하고 개수를 구함
console.log(primeCount); // 소수의 개수 출력
rl.close(); // readline 인터페이스 종료
});