#ABC170 D

import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



n = int(readline())

a = list(map(int,readline().split()))

a.sort()



if a[0] == a[-1]: # n=1 やサンプル２のような時

  if n > 1:

    print((0))

  else:

    print((1))

  exit()



if a[0] == 1: #１だけは素因数分解するときにバグるので別で処理

  if a[0] == a[1]:

    print((0))

  else:

    print((1))

  exit()

  

def divisorize(fct): # 約数のリストつくるやつ

    b, e = fct.pop()

    pre_div = divisorize(fct) if fct else [[]]

    suf_div = [[(b, k)] for k in range(e + 1)]

    return [pre + suf for pre in pre_div for suf in suf_div]



def factorize(n): #素因数分解

    fct = []

    b, e = 2, 0

    while b * b <= n:

        while n % b == 0:

            n = n // b

            e = e + 1

        if e > 0:

            fct.append((b, e))

        b, e = b + 1, 0

    if n > 1:

        fct.append((n, 1))

    return fct

 

 

def num(fct):

    a = 1

    for base, exponent in fct:

        a = a * base**exponent

    return a

    

s = set()

ans = 0

for nm,i in enumerate(a):

  c = set()

  fct = factorize(i)

  for div in divisorize(fct): # 約数の集合を作る

      c.add(num(div))



# 積集合をとり、それが空でかつ同じ数字が並んでない時に答えを加算

  if c&s == set() and ((nm < n-1 and a[nm+1] != i) or nm == n-1): 

    ans += 1

  s.add(i) #今まで見た数の集合を更新



print(ans)
import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



n = int(readline())

a = list(map(int,readline().split()))

a.sort()



if a[0] == a[-1]:

  if n > 1:

    print((0))

  else:

    print((1))

  exit()



def gcd(a, b):

    while b: a, b = b, a % b

    return a

def isPrimeMR(n):

    d = n - 1

    d = d // (d & -d)

    L = [2, 7, 61] if n < 1<<32 else [2, 3, 5, 7, 11, 13, 17] if n < 1<<48 else [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]

    for a in L:

        t = d

        y = pow(a, t, n)

        if y == 1: continue

        while y != n - 1:

            y = y * y % n

            if y == 1 or t == n - 1: return 0

            t <<= 1

    return 1

def findFactorRho(n):

    m = 1 << n.bit_length() // 8

    for c in range(1, 99):

        f = lambda x: (x * x + c) % n

        y, r, q, g = 2, 1, 1, 1

        while g == 1:

            x = y

            for i in range(r):

                y = f(y)

            k = 0

            while k < r and g == 1:

                ys = y

                for i in range(min(m, r - k)):

                    y = f(y)

                    q = q * abs(x - y) % n

                g = gcd(q, n)

                k += m

            r <<= 1

        if g == n:

            g = 1

            while g == 1:

                ys = f(ys)

                g = gcd(abs(x - ys), n)

        if g < n:

            if isPrimeMR(g): return g

            elif isPrimeMR(n // g): return n // g

            return findFactorRho(g)

def primeFactor(n):

    i = 2

    ret = {}

    rhoFlg = 0

    while i * i <= n:

        k = 0

        while n % i == 0:

            n //= i

            k += 1

        if k: ret[i] = k

        i += i % 2 + (3 if i % 3 == 1 else 1)

        if i == 101 and n >= 2 ** 20:

            while n > 1:

                if isPrimeMR(n):

                    ret[n], n = 1, 1

                else:

                    rhoFlg = 1

                    j = findFactorRho(n)

                    k = 0

                    while n % j == 0:

                        n //= j

                        k += 1

                    ret[j] = k

 

    if n > 1: ret[n] = 1

    if rhoFlg: ret = {x: ret[x] for x in sorted(ret)}

    return ret



def divisors(N):

    pf = primeFactor(N)

    ret = [1]

    for p in pf:

        ret_prev = ret

        ret = []

        for i in range(pf[p]+1):

            for r in ret_prev:

                ret.append(r * (p ** i))

    return ret

    

s = set()

ans = 0

for nm,i in enumerate(a):

  c = set(divisors(i))

  if c&s == set() and ((nm < n-1 and a[nm+1] != i) or nm == n-1): 

    ans += 1

  s.add(i)



print(ans)
# ABC170 D
import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
n = int(readline())
a = list(map(int, readline().split()))
a.sort()
if a[0] == a[-1]:  # n=1 やサンプル２のような時
    if n > 1:
        print((0))
    else:
        print((1))
    exit()
if a[0] == 1:  # １だけは素因数分解するときにバグるので別で処理
    if a[0] == a[1]:
        print((0))
    else:
        print((1))
    exit()


def divisorize(fct):  # 約数のリストつくるやつ
    b, e = fct.pop()
    pre_div = divisorize(fct) if fct else [[]]
    suf_div = [[(b, k)] for k in range(e + 1)]
    return [pre + suf for pre in pre_div for suf in suf_div]


def factorize(n):  # 素因数分解
    fct = []
    b, e = 2, 0
    while b * b <= n:
        while n % b == 0:
            n = n // b
            e = e + 1
        if e > 0:
            fct.append((b, e))
        b, e = b + 1, 0
    if n > 1:
        fct.append((n, 1))
    return fct


def num(fct):
    a = 1
    for base, exponent in fct:
        a = a * base**exponent
    return a


s = set()
ans = 0
for nm, i in enumerate(a):
    c = set()
    fct = factorize(i)
    for div in divisorize(fct):  # 約数の集合を作る
        c.add(num(div))
    # 積集合をとり、それが空でかつ同じ数字が並んでない時に答えを加算
    if c & s == set() and ((nm < n - 1 and a[nm + 1] != i) or nm == n - 1):
        ans += 1
    s.add(i)  # 今まで見た数の集合を更新
print(ans)

import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
n = int(readline())
a = list(map(int, readline().split()))
a.sort()
if a[0] == a[-1]:
    if n > 1:
        print((0))
    else:
        print((1))
    exit()


def gcd(a, b):
    while b:
        a, b = b, a % b
    return a


def isPrimeMR(n):
    d = n - 1
    d = d // (d & -d)
    L = (
        [2, 7, 61]
        if n < 1 << 32
        else [2, 3, 5, 7, 11, 13, 17]
        if n < 1 << 48
        else [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
    )
    for a in L:
        t = d
        y = pow(a, t, n)
        if y == 1:
            continue
        while y != n - 1:
            y = y * y % n
            if y == 1 or t == n - 1:
                return 0
            t <<= 1
    return 1


def findFactorRho(n):
    m = 1 << n.bit_length() // 8
    for c in range(1, 99):
        f = lambda x: (x * x + c) % n
        y, r, q, g = 2, 1, 1, 1
        while g == 1:
            x = y
            for i in range(r):
                y = f(y)
            k = 0
            while k < r and g == 1:
                ys = y
                for i in range(min(m, r - k)):
                    y = f(y)
                    q = q * abs(x - y) % n
                g = gcd(q, n)
                k += m
            r <<= 1
        if g == n:
            g = 1
            while g == 1:
                ys = f(ys)
                g = gcd(abs(x - ys), n)
        if g < n:
            if isPrimeMR(g):
                return g
            elif isPrimeMR(n // g):
                return n // g
            return findFactorRho(g)


def primeFactor(n):
    i = 2
    ret = {}
    rhoFlg = 0
    while i * i <= n:
        k = 0
        while n % i == 0:
            n //= i
            k += 1
        if k:
            ret[i] = k
        i += i % 2 + (3 if i % 3 == 1 else 1)
        if i == 101 and n >= 2**20:
            while n > 1:
                if isPrimeMR(n):
                    ret[n], n = 1, 1
                else:
                    rhoFlg = 1
                    j = findFactorRho(n)
                    k = 0
                    while n % j == 0:
                        n //= j
                        k += 1
                    ret[j] = k
    if n > 1:
        ret[n] = 1
    if rhoFlg:
        ret = {x: ret[x] for x in sorted(ret)}
    return ret


def divisors(N):
    pf = primeFactor(N)
    ret = [1]
    for p in pf:
        ret_prev = ret
        ret = []
        for i in range(pf[p] + 1):
            for r in ret_prev:
                ret.append(r * (p**i))
    return ret


s = set()
ans = 0
for nm, i in enumerate(a):
    c = set(divisors(i))
    if c & s == set() and ((nm < n - 1 and a[nm + 1] != i) or nm == n - 1):
        ans += 1
    s.add(i)
print(ans)

-# ABC170 D -if a[0] == a[-1]:  # n=1 やサンプル２のような時 +if a[0] == a[-1]: -        print((0)) -    else: -        print((1)) -    exit() -if a[0] == 1:  # １だけは素因数分解するときにバグるので別で処理 -    if a[0] == a[1]: -def divisorize(fct):  # 約数のリストつくるやつ -    b, e = fct.pop() -    pre_div = divisorize(fct) if fct else [[]] -    suf_div = [[(b, k)] for k in range(e + 1)] -    return [pre + suf for pre in pre_div for suf in suf_div] +def gcd(a, b): +    while b: +        a, b = b, a % b +    return a -def factorize(n):  # 素因数分解 -    fct = [] -    b, e = 2, 0 -    while b * b <= n: -        while n % b == 0: -            n = n // b -            e = e + 1 -        if e > 0: -            fct.append((b, e)) -        b, e = b + 1, 0 -    if n > 1: -        fct.append((n, 1)) -    return fct +def isPrimeMR(n): +    d = n - 1 +    d = d // (d & -d) +    L = ( +        [2, 7, 61] +        if n < 1 << 32 +        else [2, 3, 5, 7, 11, 13, 17] +        if n < 1 << 48 +        else [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37] +    ) +    for a in L: +        t = d +        y = pow(a, t, n) +        if y == 1: +            continue +        while y != n - 1: +            y = y * y % n +            if y == 1 or t == n - 1: +                return 0 +            t <<= 1 +    return 1 -def num(fct): -    a = 1 -    for base, exponent in fct: -        a = a * base**exponent -    return a +def findFactorRho(n): +    m = 1 << n.bit_length() // 8 +    for c in range(1, 99): +        f = lambda x: (x * x + c) % n +        y, r, q, g = 2, 1, 1, 1 +        while g == 1: +            x = y +            for i in range(r): +                y = f(y) +            k = 0 +            while k < r and g == 1: +                ys = y +                for i in range(min(m, r - k)): +                    y = f(y) +                    q = q * abs(x - y) % n +                g = gcd(q, n) +                k += m +            r <<= 1 +        if g == n: +            g = 1 +            while g == 1: +                ys = f(ys) +                g = gcd(abs(x - ys), n) +        if g < n: +            if isPrimeMR(g): +                return g +            elif isPrimeMR(n // g): +                return n // g +            return findFactorRho(g) + + +def primeFactor(n): +    i = 2 +    ret = {} +    rhoFlg = 0 +    while i * i <= n: +        k = 0 +        while n % i == 0: +            n //= i +            k += 1 +        if k: +            ret[i] = k +        i += i % 2 + (3 if i % 3 == 1 else 1) +        if i == 101 and n >= 2**20: +            while n > 1: +                if isPrimeMR(n): +                    ret[n], n = 1, 1 +                else: +                    rhoFlg = 1 +                    j = findFactorRho(n) +                    k = 0 +                    while n % j == 0: +                        n //= j +                        k += 1 +                    ret[j] = k +    if n > 1: +        ret[n] = 1 +    if rhoFlg: +        ret = {x: ret[x] for x in sorted(ret)} +    return ret + + +def divisors(N): +    pf = primeFactor(N) +    ret = [1] +    for p in pf: +        ret_prev = ret +        ret = [] +        for i in range(pf[p] + 1): +            for r in ret_prev: +                ret.append(r * (p**i)) +    return ret -    c = set() -    fct = factorize(i) -    for div in divisorize(fct):  # 約数の集合を作る -        c.add(num(div)) -    # 積集合をとり、それが空でかつ同じ数字が並んでない時に答えを加算 +    c = set(divisors(i)) -    s.add(i)  # 今まで見た数の集合を更新 +    s.add(i)