We must first know a formula: $ \ mu (lcm (i , j)) = \ mu (i) \ cdot \ mu (j) \ cdot \ mu (gcd (i, j)) $ ( min is 0 discussion )
order $ D = GCD (I, J) $, $ n-'= \ lfloor n-/ D \ rfloor $, $ m' = \ lfloor m / D \ rfloor $
$ \ SUM \ MU (LCM (I, J) ) $
$ = \ sum_ {D =. 1} ^ {n-} \ MU (D) \ sum_ {I =. 1} ^ {n-'} \ MU (ID) \ sum_ {J =. 1} ^ {m'} \ mu (jd) \ sum_ {g | i, g | j} \ mu (g) $
order $ n '' = \ lfloor n '/ g \ rfloor $, $ m' '= \ lfloor m' / g \ rfloor $
$ = \ sum_ {D =. 1} ^ {n-} \ MU (D) \ sum_ {G =. 1} ^ {n-'} \ MU (G) \ sum_ {I =. 1} ^ {n-' '} \ mu (igd) \ sum_ {j = 1} ^ {m ''} \ mu (jgd) $
order $ T = Gd $
$ = \ sum_ {T =. 1} ^ {n-} \ MU * \ MU (T) \ sum_ {i = 1} ^ {n ''} \ mu (it) \ sum_ {j = 1} ^ {m ''} \ mu (jt) $
where $ \ mu * \ mu $ and the latter are It can be pretreated pretreatment complexity $ o (nlnn) $, violent interrogation enumeration t, complexity $ o (Tn) $, by
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 1000005 4 int t,n,m,mu[N],vis[N],p[N],mu2[N]; 5 vector<int>mu3[N]; 6 long long ans; 7 int gcd(int x,int y){ 8 if (!y)return x; 9 return gcd(y,x%y); 10 } 11 int main(){ 12 mu[1]=1; 13 for(int i=2;i<N-4;i++){ 14 if (!vis[i]){ 15 p[++p[0]]=i; 16 mu[i]=-1; 17 } 18 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){ 19 vis[i*p[j]]=1; 20 if (i%p[j]==0){ 21 mu[i*p[j]]=0; 22 break; 23 } 24 mu[i*p[j]]=-mu[i]; 25 } 26 } 27 for(int i=1;i<N-4;i++) 28 for(int j=1;j<=(N-5)/i;j++)mu2[i*j]+=mu[i]*mu[j]; 29 for(int i=1;i<N-4;i++){ 30 mu3[i].push_back(mu[i]); 31 for(int j=2;j<=(N-5)/i;j++)mu3[i].push_back(mu3[i][j-2]+mu[i*j]); 32 } 33 scanf("%d",&t); 34 while (t--){ 35 scanf("%d%d",&n,&m); 36 ans=0; 37 if (n>m)swap(n,m); 38 for(int i=1;i<=n;i++)ans+=1LL*mu2[i]*mu3[i][n/i-1]*mu3[i][m/i-1]; 39 printf("%lld\n",ans); 40 } 41 }