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

int compar(const void *a, const void *b)
{
	return *(int*)a - *(int*)b;
}

int main () {
	int N;
	scanf("%d", &N);
	int *A = malloc(N * sizeof(int));
	int *exists = calloc(1, 1000000 * sizeof(int));
	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
		exists[A[i]] += 1;
	}

	// ソートする
	qsort(A, N, sizeof(int), compar);

	int ans = 0;
	for (int i = 0; i < N; i++) {
		int warikireta = 0;
		// 同じ数字が存在する場合は、割り切れる
		if (exists[A[i]] > 1)
			continue;
		for (int j = 0; j < i; j++) {
			// 2のチェック
			if ((A[i] / 2) < A[j])
				break;
			// 3の倍数チェック
			if ((A[i] / 3) < A[j]) {
				// A[j]がA[i]を3で割った値より大きい場合割り切れる可能性があるのは
				// A[i] / 2のみ
				if (A[i] % 2 == 0 && exists[A[i] / 2]) {
					warikireta = 1;
					break;
				} else {
					break;
				}
			}
			// 5の倍数チェック
			if ((A[i] /5) < A[j]) {
				if (A[i] % 2 == 0 && exists[A[i] / 2]) {
					warikireta = 1;
					break;
				} else if (A[i] % 3 == 0 && exists[A[i] / 3]) {
					warikireta = 1;
					break;
				} else if (A[i] % 4 == 0 && exists[A[i] / 4]) {
					warikireta = 1;
					break;
				} else {
					break;
				}
			}

			if (A[i] % A[j] == 0) {
				warikireta = 1;
				break;
			}
		}
		if (warikireta == 0)
			ans++;
	}

	printf("%d\n", ans);

	return 0;
}
