线筛模板
if (n>m) swap(n,m);mu[1]=1;
fo(i,2,n) {
if (!f[i]) p[++tot]=i,mu[i]=-1;
fo(j,1,tot) {
int k=p[j]*i;if (k>n) break;f[k]=1;
if (!(i%p[j])) break;mu[k]=-mu[i];
}
}
if (n>m) swap(n,m);mu[1]=1;
fo(i,2,n) {
if (!f[i]) p[++tot]=i,mu[i]=-1;
fo(j,1,tot) {
int k=p[j]*i;if (k>n) break;f[k]=1;
if (!(i%p[j])) break;mu[k]=-mu[i];
}
}