#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 10;
int cnt[MAXN];
int n, k;
bool read() {
  if (scanf("%d%d", &n, &k) < 2) {
    return false;
  }
  memset(cnt, 0, sizeof cnt);
  for (int i = 0; i < (int)n; ++i) {
    int c;
    scanf("%d", &c);
    ++cnt[c];
  }
  return true;
}
bool pr[MAXN];
int deg(int x, int p) {
  int ans = 0;
  while (x % p == 0) {
    x /= p;
    ++ans;
  }
  return ans;
}
void precalc() {
  memset(pr, true, sizeof pr);
  for (int i = 2; i < MAXN; ++i) {
    if (pr[i]) {
      for (int j = i + i; j < MAXN; j += i) {
        pr[j] = false;
      }
    }
  }
}
int max_deg[MAXN];
bool solve() {
  memset(max_deg, 0, sizeof max_deg);
  for (int p = 2; p < MAXN; ++p) {
    if (!pr[p]) {
      continue;
    }
    for (int c = p; c < MAXN; c += p) {
      if (cnt[c]) {
        max_deg[p] = max(max_deg[p], deg(c, p));
      }
    }
  }
  for (int p = 2; p <= k; ++p) {
    if (!pr[p]) {
      continue;
    }
    int d = deg(k, p);
    if (d > max_deg[p]) {
      return false;
    }
  }
  return true;
}
int main() {
  precalc();
  while (read()) {
    puts(solve() ? "Yes" : "No");
  }
  return 0;
}
