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>

//static int primes[100000000+1];
static int primes[10001];

void init_primes()
{
    int i, j, k;
    //for(i = 0; i <= 100000000; i++) {
    for(i = 0; i <= 10000; i++) {
        primes[i] = 1;
    }
    primes[0] = 0;
    primes[1] = 0;
    //for(i = 2; i <= 10000; i++) {
    for(i = 2; i <= 100; i++) {
        if(primes[i] == 1) {
            //for(j = i*i; j <= 100000000; j += i) {
            for(j = i*i; j <= 10000; j += i) {
                primes[j] = 0;
            }
        }
    }
}

int is_prime(int num)
{
    int i;
    for(i = 2; i <= 10000 && i < num; i++) {
        if(primes[i] == 1 && num%i == 0) {
        //printf("%d : %d\n", num , i);
        //if(num%i == 0) {
            return 0;
        }
    }
    return 1;
}

int main()
{
    int n;
    int a;
    int i;
    int count;

    init_primes();
    scanf("%d", &n);
    count = 0;
    for(i = 0; i < n; i++) {
        scanf("%d", &a);
        //count += primes[a];
        count += is_prime(a);
    }
    printf("%d\n", count);
    return 0;
}