#include #define rep(i, ss, ee) for (int i = ss; i < ee; ++i) using namespace std; using ull = unsigned long long; std::vector primes; void eratosthenes(ull n) { vector sieve(n, 1); sieve[0] = sieve[1] = false; rep(i, 0, n) { if (sieve[i]) { for (int j = i + i; j < n; j += i) { sieve[j] = false; } } } rep(i, 2, sieve.size()) if (sieve[i]) primes.emplace_back(i); } bool IsPrime(int num) { if (num < 2) return false; else if (num == 2) return true; else if (num % 2 == 0) return false; double sqrtNum = sqrt(num); for (int i = 3; i <= sqrtNum; i += 2) { if (num % i == 0) { return false; } } return true; } bool isInfinitedecimal(unsigned n) { if (n == 1) return false; eratosthenes(sqrt(n) + 1); for (auto p : primes) { if (p == 2 or p == 5) continue; if (n % p == 0) return true; } return false; } void solve() { ull a, b; cin >> a >> b; cout << (((a != b && a % b != 0) && (isInfinitedecimal(b)) ? "Yes" : "No")) << endl; } int main() { cin.tie(0); ios::sync_with_stdio(false); solve(); getchar(); }