#include using namespace std; typedef long long ll; const int nax = 1e6 + 7; vectorprime(nax, true); vectorpar(nax); vectors(nax); int get(int x) { if (x == par[x])return x; return (par[x] = get(par[x])); } bool modify(int x, int y) { x = get(x); y = get(y); if (x == y)return true; if (s[y] > s[x]) swap(x, y); par[y] = x; s[x] += s[y]; return false; } void prepare(int n) { for (int i = 2; i <= n; i++) { if (prime[i]) { for (int j = 2; (j * i) <= n; j++) { prime[j * i] = false; modify(i * j, i); // cout << i << " " << i*j << endl; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, node; cin >> n >> node; iota(par.begin(), par.end(), 0); fill(s.begin(), s.end(), 1); prepare(n); cout << s[get(node)] << endl; }