#include // #include // #include using namespace std; // using namespace atcoder; // using bint = boost::multiprecision::cpp_int; using ll = long long; using ull = unsigned long long; using P = pair; #define rep(i,n) for(ll i = 0;i < (ll)n;i++) #define ALL(x) (x).begin(),(x).end() #define MOD 1000000007 int main(){ ll a,b; cin >> a >> b; map mp; ll k = a; for(ll i = 2;i*i <= k;i++){ while(!(k%i)){ mp[i]++; k /= i; } } if(k > 1)mp[k]++; ll bb = b; for(auto au : mp){ ll p = au.first; ll K = au.second*b; ll cnt = 0; while(!(bb%p)){ cnt++; bb /= p; } if(K != cnt*a){ cout << "No\n"; return 0; } } if(bb > 1)cout << "No\n"; else cout << "Yes\n"; return 0; }