출처
백준 온라인 저지
https://www.acmicpc.net/problem/1978
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
첫 줄에 수의 개수 N이 주어진다. N은 100 이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
풀이
소수란 1과 자신만으로 나누어 떨어지는 1보다 큰 양의 정수를 뜻합니다.
2, 3, 5, 7, 11, 13... 와 같은 수는 소수가 됩니다.
이를 이용하여 1과 자신만으로 나누어 떨어지는지 체크하는 함수를 만들어 놓고 filter 메서드를 이용하여 소수인지 확인하여 줍니다.
filter 메서드를 이용하여 나온 배열은 소수인 것만 남기 때문에 해당 배열의 길이를 출력하여 줍니다.
코드
const isPrime = (n) => {
if (n == 1) {
return false;
}
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
return false;
}
}
return true;
}
const input = require('fs').readFileSync('/dev/stdin').toString().trim();
const [c, nums] = input.split("\n");
console.log(nums.split(" ").filter(v => isPrime(v)).length);