#include <stdio.h>
#include <math.h>
long long gcd(long long a, long long b) {
return (b == 0 ? a : gcd(b, a % b));
}
int ktra(long long a, long long b) {
return (b * gcd(a, b) % (a + b)) == 0;
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
long long n, m;
scanf("%lld %lld", &n, &m);
long long res = 0;
long long limit_n = (long long)sqrt(n);
long long limit_m = (long long)sqrt(m);
for (long long i = 1; i * i <= n; ++i) {
for (long long j = 1; j * j <= m; ++j) {
if (gcd(i, j) == 1) {
res += (long long)fmin(n / ((i + j) * i), m / ((i + j) * j));
}
}
}
printf("%lld\n", res);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpsb25nIGxvbmcgZ2NkKGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgYikgewogICAgcmV0dXJuIChiID09IDAgPyBhIDogZ2NkKGIsIGEgJSBiKSk7Cn0KCmludCBrdHJhKGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgYikgewogICAgcmV0dXJuIChiICogZ2NkKGEsIGIpICUgKGEgKyBiKSkgPT0gMDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgdDsKICAgIHNjYW5mKCIlZCIsICZ0KTsKCiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgbG9uZyBsb25nIG4sIG07CiAgICAgICAgc2NhbmYoIiVsbGQgJWxsZCIsICZuLCAmbSk7CgogICAgICAgIGxvbmcgbG9uZyByZXMgPSAwOwogICAgICAgIGxvbmcgbG9uZyBsaW1pdF9uID0gKGxvbmcgbG9uZylzcXJ0KG4pOwogICAgICAgIGxvbmcgbG9uZyBsaW1pdF9tID0gKGxvbmcgbG9uZylzcXJ0KG0pOwoKICAgICAgICBmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSAqIGkgPD0gbjsgKytpKSB7CiAgICAgICAgICAgIGZvciAobG9uZyBsb25nIGogPSAxOyBqICogaiA8PSBtOyArK2opIHsKICAgICAgICAgICAgICAgIGlmIChnY2QoaSwgaikgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIHJlcyArPSAobG9uZyBsb25nKWZtaW4obiAvICgoaSArIGopICogaSksIG0gLyAoKGkgKyBqKSAqIGopKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHJpbnRmKCIlbGxkXG4iLCByZXMpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==