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

import scala.util.Random.nextInt
import scala.math.BigInt
import scala.io.StdIn.readInt
object Main {
    def main(args: Array[String]): Unit = {
        val len = readInt()
        var ret = (1 to len).foldLeft(0) {(a, b) => 
            if (isPrime(readInt(), 50)) a + 1
            else a
        }
        println(ret)
    }
    def isPrime(n: Int, k: Int): Boolean = {
        if (n == 2) return true
        if (n == 1 || n % 2 == 0) return false
        
        def f1(dd: Int, ss: Int): (Int, Int) = {
            if (dd % 2 == 0) f1(dd / 2, ss + 1)
            else (dd, ss)
        }
        val (d, s) = f1(n - 1, 0)

        (1 to k).foreach { dummy1 =>
            var isPP = false
            val a = nextInt(n - 1) + 1

            var r = BigInt(a).modPow(d, n)
            if (r == BigInt(1) || r == BigInt(n - 1)) isPP = true

            (1 to s).foreach { dummy2 =>
                r = r.modPow(2, n)
                if (r == BigInt(n - 1)) isPP = true
            }

            if (!isPP) return false
        }
        return true
    }
}