import sys

import numpy as np

#from numba import njit

 

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

 

#@njit('(i4[::1],)', cache=True)

def solve(A):

    count = np.zeros(10**6 + 10, np.int32)

    for x in A:

        if count[x] > 1:

            continue

        count[::x] += 1

    ret = 0

    for x in A:

        ret += count[x] == 1

    return ret



A = np.array(read().split(), np.int32)[1:]

 

print((solve(A)))
#maspyさんを参考に

import sys

#import numpy as np

#from numba import njit

 

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



# この最適化がよくわからん。Numpyループなら行けるらしい

# 400msくらいは最低でもかかるけど、N=10^5でも2でも変わらんと言う

#@njit('(i4[::1],)', cache=True)

def solve(A):

  # エラトステネス古いって値側のバリエーションとして配列をとるんや

  # maxA = 10**6って言うのがポイントっぽいなあ。。

    count = np.zeros(10**6 + 10, np.int32)

    for x in A:

        if count[x] > 1:

            continue

        count[::x] += 1

    ret = 0

    for x in A:

        ret += count[x] == 1

    return ret



def solve2(A):

  count = [0 for _ in range(10**6 + 10)]

  for x in A:

    if count[x] > 1:

      continue

    for a in range(0,len(count),x):

      count[a] += 1

  ret = 0

  for x in A:

    ret += (1 if count[x] == 1 else 0)

  #print(count[:24])

  return ret

  

# このコードわからなかった。一行目のNをSKIPしたリストになっている。。

#A = np.array(read().split(), np.int32)[1:]

N = int(eval(input()))

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

# この手法だとソート不要なのか？？だから早いのか？？

print((solve2(A)))

import sys
import numpy as np

# from numba import njit
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
# @njit('(i4[::1],)', cache=True)
def solve(A):
    count = np.zeros(10**6 + 10, np.int32)
    for x in A:
        if count[x] > 1:
            continue
        count[::x] += 1
    ret = 0
    for x in A:
        ret += count[x] == 1
    return ret


A = np.array(read().split(), np.int32)[1:]
print((solve(A)))

# maspyさんを参考に
import sys

# import numpy as np
# from numba import njit
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
# この最適化がよくわからん。Numpyループなら行けるらしい
# 400msくらいは最低でもかかるけど、N=10^5でも2でも変わらんと言う
# @njit('(i4[::1],)', cache=True)
def solve(A):
    # エラトステネス古いって値側のバリエーションとして配列をとるんや
    # maxA = 10**6って言うのがポイントっぽいなあ。。
    count = np.zeros(10**6 + 10, np.int32)
    for x in A:
        if count[x] > 1:
            continue
        count[::x] += 1
    ret = 0
    for x in A:
        ret += count[x] == 1
    return ret


def solve2(A):
    count = [0 for _ in range(10**6 + 10)]
    for x in A:
        if count[x] > 1:
            continue
        for a in range(0, len(count), x):
            count[a] += 1
    ret = 0
    for x in A:
        ret += 1 if count[x] == 1 else 0
    # print(count[:24])
    return ret


# このコードわからなかった。一行目のNをSKIPしたリストになっている。。
# A = np.array(read().split(), np.int32)[1:]
N = int(eval(input()))
A = list(map(int, input().split()))
# この手法だとソート不要なのか？？だから早いのか？？
print((solve2(A)))

+# maspyさんを参考に -import numpy as np +# import numpy as np +# この最適化がよくわからん。Numpyループなら行けるらしい +# 400msくらいは最低でもかかるけど、N=10^5でも2でも変わらんと言う +    # エラトステネス古いって値側のバリエーションとして配列をとるんや +    # maxA = 10**6って言うのがポイントっぽいなあ。。 -A = np.array(read().split(), np.int32)[1:] -print((solve(A))) +def solve2(A): +    count = [0 for _ in range(10**6 + 10)] +    for x in A: +        if count[x] > 1: +            continue +        for a in range(0, len(count), x): +            count[a] += 1 +    ret = 0 +    for x in A: +        ret += 1 if count[x] == 1 else 0 +    # print(count[:24]) +    return ret + + +# このコードわからなかった。一行目のNをSKIPしたリストになっている。。 +# A = np.array(read().split(), np.int32)[1:] +N = int(eval(input())) +A = list(map(int, input().split())) +# この手法だとソート不要なのか？？だから早いのか？？ +print((solve2(A)))