#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 5;
bool isprime[MAX];
int prime[MAX], tot;
void sieve(int n) {
  memset(isprime, true, sizeof(isprime));
  tot = 0;
  for (int i = 2; i <= n; i++) {
    if (isprime[i]) prime[tot++] = i;
    for (int j = 0; j < tot && prime[j] * i <= n; j++) {
      isprime[prime[j] * i] = false;
      if (i % prime[j] == 0) break;
    }
  }
}
map<int, int> cnt;
int main() {
  sieve(1e5);
  int n, s, ans = 1;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &s);
    int j = 0;
    while (s > 1 && j < tot && prime[j] * prime[j] <= s) {
      bool flag = false;
      while (s % prime[j] == 0) {
        s /= prime[j];
        flag = true;
      }
      if (flag) {
        cnt[prime[j]]++;
        ans = max(ans, cnt[prime[j]]);
      }
      j++;
    }
    if (s > 1 && isprime[s]) {
      cnt[s]++;
      ans = max(ans, cnt[s]);
    }
  }
  printf("%d\n", ans);
  return 0;
}
