#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

typedef struct {
  unsigned int bool: 1;
}boolean;

void sieve(boolean *list, long max) {
  int i,j;
  long k;

  for(k = 0; k <= max; k++) list[k].bool = 0;
  
  list[0].bool = 1;
  list[1].bool = 1;

  for(i = 2; i <= (int)sqrt(max); i++) {
    if(list[i].bool == 0) {
      for(j = i; i*(long)j <= max; j++) {
	  list[i*j].bool = 1;
      }
    }
  }
}


int main() {
  int N,i,t;
  scanf("%d", &N);
  long a[N],max;
  max = 0;
  for(i = 0; i < N; i++) {
    scanf("%ld", a+i);
    if(a[i] > max) max = a[i];
  }
  
  boolean *list;
  list = (boolean *)malloc(sizeof(boolean)*(max+1));
  sieve(list,max);

  t = 0;
  for(i = 0; i < N; i++) {
    if(list[a[i]].bool == 0) t++;
  }
  printf("%d\n", t);

  free(list);
  return 0;
}