#include<stdio.h>
#include <stdlib.h>
int flag[200005];
int a[200005];


int sort(int i,int j,int *arr){
    int k = i;
    while(i < j){
        while(k < j){
            //注意处理等值的情况，这里将等值置于大堆
            if(*(arr+k) <= *(arr+j)){
                j--;
            }else{
                int tmp = *(arr+j);
                *(arr+j) = *(arr+k);
                *(arr+k) = tmp;
                k = j;
            }
        }
        while(k > i){
            if(*(arr+k) > *(arr+i)){
                i++;
            }else{
                int tmp = *(arr+i);
                *(arr+i) = *(arr+k);
                *(arr+k) = tmp;
                k = i;
            }
        }
    }
    return k;
}
//快速排序入口函数
//i 数组区间开始下标
//j 数组区间结束下标
int quicksort(int i,int j,int * arr){
int k;
    if(i < j){
        //这里完成一趟排序，将arr[k]置于正确位置
        k = sort(i,j,arr);
        //这里处理arr[k]左侧区间
        if(k > i){
            quicksort(i,k-1,arr);
        }
        //这里处理arr[k]右侧区间
        if(k < j){
            quicksort(k+1,j,arr);
        }
    }
    return 0;
}



int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        flag[i]=0;
        scanf("%d",&a[i]);
    }
    quicksort(1,n,a);
    for(int i=1;i<=n;i++)
    {
        if(flag[i])
            continue;
        for(int j=i+1;j<=n;j++)
        {
            if(!(a[i]%a[j]))
                flag[i]=1;
            if(!(a[j]%a[i]))
                flag[j]=1;
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++)
        if(!flag[i])
            ans++;
    printf("%d",ans);
    return 0;
}
