#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
template <typename Type>
string ToString(const Type& val) {
  stringstream ss;
  ss << val;
  return ss.str();
}
int __gcd(int a, int b) {
  while (a != 0) {
    int __t = b % a;
    b = a;
    a = __t;
  }
  return b;
}
inline long long absl(long long x) { return (x < 0 ? -x : x); }
int gcdpl(int a, int b, int& x, int& y) {
  if (!a) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = gcdpl(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
bool findSol(int a, int b, int c, int& x, int& y, int& g) {
  g = gcdpl(abs(a), abs(b), x, y);
  if (c % g) return false;
  x *= c / g * (a < 0 ? -1 : 1);
  y *= c / g * (b < 0 ? -1 : 1);
  return true;
}
int main() {
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.tie(NULL);
  ios_base::sync_with_stdio(false);
  unsigned N;
  int k;
  cin >> N >> k;
  vector<int> p(1e6 + 1);
  for (unsigned i = 2; i < p.size(); i++)
    if (!p[i])
      for (unsigned j = i; j < p.size(); j += i) p[j] = i;
  vector<unsigned> cnt(1e6 + 1);
  for (unsigned i = 0; i < N; i++) {
    int v;
    cin >> v;
    while (v > 1) {
      int r = p[v];
      unsigned k = 0;
      while (v % r == 0) {
        v /= r;
        k++;
      }
      cnt[r] = max(cnt[r], k);
    }
  }
  while (k > 1) {
    if (!cnt[p[k]]) {
      cout << "No";
      return 0;
    }
    cnt[p[k]]--;
    k /= p[k];
  }
  cout << "Yes";
  return 0;
}
