#include using namespace std; const int maxn=1e6; int test,n,m,f[1111111],g[1111111],mu[1111111],t; int prime[1111111],cnt; bool F[1111111]; long long ans; void Init() { mu[1]=1; for (int i=2;i<=maxn;i++) { if (!F[i]) { prime[++cnt]=i; mu[i]=-1; } for (int j=1;j<=cnt && i*prime[j]<=maxn;j++) { F[i*prime[j]]=1; if (i%prime[j]==0) { mu[i*prime[j]]=0; break; } mu[i*prime[j]]=-mu[i]; } } } int main() { scanf("%d",&test); Init(); while(test--) { scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { f[i]=0; for (int j=i;j<=n;j+=i) f[i]+=mu[j]; } for (int i=1;i<=m;i++) { g[i]=0; for (int j=i;j<=m;j+=i) g[i]+=mu[j]; } t=min(n,m);ans=0; for (int i=1;i<=t;i++) { for (int j=1;i*j<=t;j++) { ans+=(1ll*mu[i]*mu[j]*f[i*j]*g[i*j]); } } printf("%I64d\n",ans); } return 0; }