주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 1000
int main() {
// 에라토스테네스의 체
bool is_prime[1010];
memset(is_prime, 1, sizeof(is_prime));
is_prime[0] = false;
is_prime[1] = false;
for(int i=2; i*i<=MAX; ++i) {
if(is_prime[i]) {
for(int j=2*i; j<=MAX; j+=i) {
is_prime[j] = false;
}
}
}
int N, num, answer = 0;
cin >> N;
for(int i=0; i<N; ++i) {
cin >> num;
if(is_prime[num]) answer++;
}
cout << answer;
return 0;
}