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 JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Date;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO ?????????????????????????????????????????????
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		PrimeNumberGenerator png = new PrimeNumberGenerator();
		int count = 0;

		for(int i = 0; i < n; i++){

			int m = Integer.parseInt(br.readLine());


			if(png.isPrime(m)){
					//System.out.println(i);
				count++;
			}


		}
		System.out.println(count);
	}

}

class PrimeNumberGenerator {
	private boolean[] isPrime= new boolean[100000001];

	public PrimeNumberGenerator() {
		//Date from = new Date();
		Arrays.fill(isPrime, true);

		isPrime[0] = false;
		isPrime[1] = false;
		isPrime[2] = true;

		for(int i = 3; i <= Math.sqrt( isPrime.length ); i+=2){
			/*
			if(i % 2 == 0){
				isPrime[i] = false;
				continue;
			}
			*/

			if(isPrime[i] == false){
				continue;
			}

			for(int j = i * 2; j <= isPrime.length - 1; j += i){
				isPrime[j] = false;
			}
		}
		//Date to = new Date();
		//System.out.println("init takes "+ (to.getTime() - from.getTime())+ "milli sec");
	}

	public boolean isPrime(int index){
		if(index % 2 == 0 && index != 2){
			return false;
		}
		return isPrime[index];
	}
}