fun main() {
    val limit = 1000000
    val era = BooleanArray(limit + 1)
    val primes = ArrayList<Int>()
    var d = 2

    // a1 a2 a3 a4 ai ai+1, ...  an-1, an
    // Ai <= Ai+1
    // Ai = set(p0, p1, ... pk)
    // Ai 가 Aj 에 의해 divide 된다는 것은 Aj 를 소인수분해했을때 나오는 모든 소수들을 Ai 가 가지고 있어야한다.
    // 그리고 Aj 의 각 소수의 지수들은 Ai 의 그 소수의 지수들보다는 작거나 같아야 한다.
    // Ai 가 Divisible 되는지 확인하는 방법은, Ai 보다 작은 수들 중에서 위 조건을 만족하는 애들을 찾는 것이다.
    // 일단 중복된 수들은 Non - Divisible 이다. 그리고, 숫자 1이 나오면 1 보다 큰 모든 수들은 전부 Non-Divisible 이다.
    // 100만 + 50만 + 33 + 20 + 14만 + 9만 + 7


    while (d <= limit) {
        if(era[d]) {
            ++d
            continue
        }
        primes.add(d)
        var k = d
        while (k <= limit) {
            era[k] = true
            k += d
        }
        ++d
    }

    var tt = 0L
    for(p in primes) {
        tt += limit / p
    }

    val n = readLine()!!.toInt()
    val arr = readLine()!!.split(" ").map { it.toInt() }.sorted().toIntArray()
    val checked = IntArray(limit + 1) //0 : empty, 1 : visit, 2: divisible

    for(i in arr.indices) {
        val v = arr[i]
        if(checked[v] == 1) {
            checked[v] = 2
            continue
        }
        if(checked[v] == 2) {
            continue
        }
        checked[v] = 1
        var k = 2
        while(v * k <= limit) {
            checked[v*k] = 2
            ++k
        }
    }
    var ans = 0
    for(i in arr.indices) {
        if(checked[arr[i]] == 1)
            ++ans
    }
    print(ans)
}
