Problem:
Prime Numbers

A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. For example, the first four prime numbers are: 2, 3, 5 and 7.

Write a program which reads a list of N integers and prints the number of prime numbers in the list.

Input

The first line contains an integer N, the number of elements in the list.

N numbers are given in the following lines.

Output

Print the number of prime numbers in the given list.

Constraints

1 ≤ N ≤ 10000

2 ≤ an element of the list ≤ 108

Sample Input 1

5
2
3
4
5
6

Sample Output 1

3

Sample Input 2

11
7
8
9
10
11
12
13
14
15
16
17

Sample Output 2

4

Solution in C (judge verdict: Accepted)

#include <stdio.h>
#include <math.h>
#define N 10000

void search_prime_number(int a[]) { // 素数探索
    int i, j;
    
    for(i=0; i<N; i++) {
        a[N] = 0;
    }

    for(i=2; i<N; i++) {
        if( a[i]==0 ) {
            for(j=i*2; j<N; j+=i) {
                a[j] = 1;
            }
        }
    }

    return;
}

int soe(int a[], int z) { // エラトステネスの篩
    int i;
    for(i=2; i<=sqrt(z); i++) {
        if( a[i] == 0 ) {
            if( z%i == 0 ) return 0;
        }
    }

    return 1;
}

int main(void) {
    int i, n, cnt, z, a[N];
    i = 0;
    cnt = 0;

    search_prime_number(a);

    do {
        scanf("%d", &n);
    } while( 1>n || n>10000);

    while( i<n ) {
        scanf("%d", &z);

        if( 2<=z && z<=100000000 ) {
            if( soe(a, z) == 1 ) {
                cnt++;
            }
            i++;
        }
    }

    printf("%d\n", cnt);

    return 0;
}