import sys

def input():

    return sys.stdin.readline()[:-1]



from itertools import count

from collections import Counter



def test():

    n = int(eval(input()))

    a = sorted([int(i) for i in input().split()])

    mxn = a[-1]

    c = Counter(a)

    a = sorted(list(set(a)))

    r = dict()

    for i in a:

        for j in count(1):

            if i * j > mxn: break

            r[i * j] = r.get(i * j, 0) + 1

    print((len([k for k in a if r[k] == 1 and c[k] == 1])))





test()
# https://qiita.com/HUVEC/items/97739696ab51cacd10f2

N = int(eval(input()))

A = list(map(int, input().split()))

A.sort()                  #エラトステネスの篩にかけるためソート

Amax = A[-1]

dp = [1]*(Amax+1)         #Aの最大値までのエラトステネスの篩を作る。

ans = 0

for i in range(len(A)-1):

  p = A[i]

  if dp[p] == 1:          #A[i]がA[j]の倍数でないかをエラトステネスの篩でチェック

    for q in range(Amax//p+1):

      dp[p*q] = 0         #A[i]の倍数をすべて0にする

    if A[i] != A[i+1]: 

      ans += 1            #A[i]が重複していなければカウント

if dp[Amax] == 1:         #重複チェック時にレンジオーバーするためAmaxだけ別で判定 

  ans += 1

print(ans)
import sys


def input():
    return sys.stdin.readline()[:-1]


from itertools import count
from collections import Counter


def test():
    n = int(eval(input()))
    a = sorted([int(i) for i in input().split()])
    mxn = a[-1]
    c = Counter(a)
    a = sorted(list(set(a)))
    r = dict()
    for i in a:
        for j in count(1):
            if i * j > mxn:
                break
            r[i * j] = r.get(i * j, 0) + 1
    print((len([k for k in a if r[k] == 1 and c[k] == 1])))


test()

# https://qiita.com/HUVEC/items/97739696ab51cacd10f2
N = int(eval(input()))
A = list(map(int, input().split()))
A.sort()  # エラトステネスの篩にかけるためソート
Amax = A[-1]
dp = [1] * (Amax + 1)  # Aの最大値までのエラトステネスの篩を作る。
ans = 0
for i in range(len(A) - 1):
    p = A[i]
    if dp[p] == 1:  # A[i]がA[j]の倍数でないかをエラトステネスの篩でチェック
        for q in range(Amax // p + 1):
            dp[p * q] = 0  # A[i]の倍数をすべて0にする
        if A[i] != A[i + 1]:
            ans += 1  # A[i]が重複していなければカウント
if dp[Amax] == 1:  # 重複チェック時にレンジオーバーするためAmaxだけ別で判定
    ans += 1
print(ans)

-import sys - - -def input(): -    return sys.stdin.readline()[:-1] - - -from itertools import count -from collections import Counter - - -def test(): -    n = int(eval(input())) -    a = sorted([int(i) for i in input().split()]) -    mxn = a[-1] -    c = Counter(a) -    a = sorted(list(set(a))) -    r = dict() -    for i in a: -        for j in count(1): -            if i * j > mxn: -                break -            r[i * j] = r.get(i * j, 0) + 1 -    print((len([k for k in a if r[k] == 1 and c[k] == 1]))) - - -test() +# https://qiita.com/HUVEC/items/97739696ab51cacd10f2 +N = int(eval(input())) +A = list(map(int, input().split())) +A.sort()  # エラトステネスの篩にかけるためソート +Amax = A[-1] +dp = [1] * (Amax + 1)  # Aの最大値までのエラトステネスの篩を作る。 +ans = 0 +for i in range(len(A) - 1): +    p = A[i] +    if dp[p] == 1:  # A[i]がA[j]の倍数でないかをエラトステネスの篩でチェック +        for q in range(Amax // p + 1): +            dp[p * q] = 0  # A[i]の倍数をすべて0にする +        if A[i] != A[i + 1]: +            ans += 1  # A[i]が重複していなければカウント +if dp[Amax] == 1:  # 重複チェック時にレンジオーバーするためAmaxだけ別で判定 +    ans += 1 +print(ans)