#include <bits/stdc++.h>
using namespace std;
template <typename T>
int size(T& a) {
  return (int)a.size();
}
template <typename T>
T sqr(T a) {
  return a * a;
}
int a[100];
const int MEM = 300000;
long long dm[MEM][100];
int k;
long long brute(int pos, long long x) {
  if (pos == k) return x;
  if (x <= 0) return 0;
  if (x < MEM && dm[x][pos] != -1) return dm[x][pos];
  long long res = brute(pos + 1, x) - brute(pos + 1, x / a[pos]);
  if (x < MEM) dm[x][pos] = res;
  return res;
}
bool isprime(int x) {
  int i = 2;
  while (i * i <= x)
    if (x % i == 0)
      return false;
    else
      ++i;
  return true;
}
int main() {
  memset((dm), (255), sizeof(dm));
  long long n;
  cin >> n >> k;
  for (int i = (0); i < (k); ++i) cin >> a[i];
  sort(a, a + k);
  for (int i = (0); i < (k / 2); ++i) swap(a[i], a[k - i - 1]);
  long long res = brute(0, n);
  cout << res;
}
