intgcd(int a, int b){ return b ? gcd(b, a % b) : a; }
intmain(){ int x, y, ans = 0; cin >> x >> y; ll mul = x * y; // 枚举y的约数,可以是p也可以是y/p for (int p = 1; p <= y / p; ++p) { if (y % p == 0) { if (gcd(p, mul / p) == x) ++ans; if (p != y / p && gcd(y / p, x * p) == x) ++ans; } } cout << ans; return0; }
intgcd(int a, int b){ return b ? gcd(b, a % b) : a; }
intmain(){ int x, y, ans = 0; cin >> x >> y; ll mul = x * y; // 通过枚举x的倍数的方式枚举p,肯定不会超过最小公倍数y for (int p = x; p <= y; p += x) { if (mul % p == 0) { int q = mul / p; if (gcd(p, q) == x) ++ans; } } cout << ans; return0; }