#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll prim[100005], lenp = 0, isprim[100005] = {0};
ll data[100005], lend;
ll n, m, t, ans;
void getprim()
{
ll i, j, k;
for(i = 2; i <= 100000; i++)
{
if(isprim[i] == 0)
{
prim[lenp++] = i;
for(j = 2; j * i <= 100000; j++)
{
isprim[j * i] = 1;
}
}
}
}
void getnum(ll n)
{
ll i, j, k;
lend = 0;
for(i = 0; prim[i] * prim[i] <= n; i++)
{
if(n % prim[i] == 0)
{
data[lend++] = prim[i];
while(n % prim[i] == 0)n /= prim[i];
}
}
if(n != 1)data[lend++] = n;
}
void dfs(ll x, ll sum, ll num)
{
if(num > lend)return ;
if(num % 2 == 1)ans += m / sum;
else ans -= m / sum;
for(ll i = x + 1; i < lend; i++)
{
dfs(i, sum * data[i], num + 1);
}
}
int main()
{
getprim();
scanf("%lld", &t);
while(t--)
{
scanf("%lld %lld", &n, &m);
ll i, j, k;
ans = 0;
for(i = 1; i <= n; i++)
{
getnum(i);
for(j = 0; j < lend; j++)
{
dfs(j, data[j], 1);
}
}
printf("%lld\n", n * m - ans);
}
return 0;
}