题目链接:https://ac.nowcoder.com/acm/contest/59007/B
#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
int p[N], cnt;
bool st[N];
void init() { //筛出1 ~ N的质数
for (int i = 2; i <= N; ++ i) {
if (!st[i]) p[++ cnt] = i;
for (int j = 1; j <= cnt && i * p[j] <= N; ++ j)
st[i * p[j]] = 1;
}
}
void solve() {
int n, k, ans = 1;
cin >> n >> k;
for (int i = 1; i <= cnt; ++ i) {
int t = 0; //质因数
while (n % p[i] == 0) t += 2, n /= p[i];
while (k % p[i] == 0) ++ t, k /= p[i];
ans *= (t + 1);
if (n == 1 && k == 1) break;
}
cout << ans - 1 << endl;
}
int main() {
int T;
cin >> T;
init();
while (T -- )
solve();
return 0;
}