source_code: import java.io.*; 
  import java.util.*; 
  import java.util.Map.*;
  import java.math.*;
  //import java.lang.*;
  
  public class q1 
  { 
      static int MOD=1000000007;
      static class Reader 
      { 
          final private int BUFFER_SIZE = 1 << 16; 
          private DataInputStream din; 
          private byte[] buffer; 
          private int bufferPointer, bytesRead; 
    
          public Reader() 
          { 
              din = new DataInputStream(System.in); 
              buffer = new byte[BUFFER_SIZE]; 
              bufferPointer = bytesRead = 0; 
          } 
    
          public Reader(String file_name) throws IOException 
          { 
              din = new DataInputStream(new FileInputStream(file_name)); 
              buffer = new byte[BUFFER_SIZE]; 
              bufferPointer = bytesRead = 0; 
          } 
    
          public String readLine() throws IOException 
          { 
              byte[] buf = new byte[1000000]; // line length 
              int cnt = 0, c; 
              while ((c = read()) != -1) 
              { 
                  if (c == '\n') 
                      break; 
                  buf[cnt++] = (byte) c; 
              } 
              return new String(buf, 0, cnt); 
          } 
    
          public int nextInt() throws IOException 
          { 
              int ret = 0; 
              byte c = read(); 
              while (c <= ' ') 
                  c = read(); 
              boolean neg = (c == '-'); 
              if (neg) 
                  c = read(); 
              do
              { 
                  ret = ret * 10 + c - '0'; 
              }  while ((c = read()) >= '0' && c <= '9'); 
    
              if (neg) 
                  return -ret; 
              return ret; 
          } 
    
          public long nextLong() throws IOException 
          { 
              long ret = 0; 
              byte c = read(); 
              while (c <= ' ') 
                  c = read(); 
              boolean neg = (c == '-'); 
              if (neg) 
                  c = read(); 
              do { 
                  ret = ret * 10 + c - '0'; 
              } 
              while ((c = read()) >= '0' && c <= '9'); 
              if (neg) 
                  return -ret; 
              return ret; 
          } 
    
          public double nextDouble() throws IOException 
          { 
              double ret = 0, div = 1; 
              byte c = read(); 
              while (c <= ' ') 
                  c = read(); 
              boolean neg = (c == '-'); 
              if (neg) 
                  c = read(); 
    
              do { 
                  ret = ret * 10 + c - '0'; 
              } 
              while ((c = read()) >= '0' && c <= '9'); 
    
              if (c == '.') 
              { 
                  while ((c = read()) >= '0' && c <= '9') 
                  { 
                      ret += (c - '0') / (div *= 10); 
                  } 
              } 
    
              if (neg) 
                  return -ret; 
              return ret; 
          } 
    
          private void fillBuffer() throws IOException 
          { 
              bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
              if (bytesRead == -1) 
                  buffer[0] = -1; 
          } 
    
          private byte read() throws IOException 
          { 
              if (bufferPointer == bytesRead) 
                  fillBuffer(); 
              return buffer[bufferPointer++]; 
          } 
    
          public void close() throws IOException 
          { 
              if (din == null) 
                  return; 
              din.close(); 
          } 
      }
      
      static boolean isPrime(int n) 
      { 
          if (n <= 1) 
              return false; 
          if (n <= 3) 
              return true; 
          if (n % 2 == 0 || n % 3 == 0) 
              return false; 
        
          for (int i = 5; i * i <= n; i = i + 6) 
              if (n % i == 0 ||  n % (i + 2) == 0) 
                  return false; 
        
          return true; 
      } 
      static int gcd(int a, int b) 
      { 
        if (b == 0) 
          return a; 
        return gcd(b, a % b);  
      } 
      //Functions
  
  
  
      
      public static void main(String[] args) throws IOException 
      { 
         Scanner sc=new Scanner(System.in); 
         //int T=sc.nextInt();
         int T=1;
         while(T-- > 0){
             int N=sc.nextInt();
             int a[]=new int[N];
             int count=0;
             int ans=0;
             boolean flag=false;
  
             for(int i=0;i<N;++i){
                 a[i]=sc.nextInt();
             }
             Arrays.sort(a);
             for(int i=0;i<N;++i){
                 if(a[i]==-1)
                  continue;
              for(int j=i+1;j<N;++j){
                  if(a[j]%a[i]==0 && a[j]!=-1){
                      a[j]=-1;;
                  }
              }
             }
             //int i=0;
             for(int i=0;i<N;++i){
                 if(a[i]!= -1)
                 count++;
             }
  
             System.out.println(count);
          } // End of test cases loop 
  
          
      }//end of main function
      
      
  } //end of class