莫比乌斯反演
由于莫比乌斯反演的应用非常广泛,内容很多但是结论却并不复杂。
一道经典的莫比乌斯反演题:
求:∑ni=1∑mj=1[gcd(i,j)==d]∑i=1n∑j=1m[gcd(i,j)==d]
也就是说有多少对(i,j)的gcd为d。
莫比乌斯反演公式
莫比乌斯函数
程序模板
void mobius()
{
int i,j; mbs[1] = 1;
fo(i,2,N)
{
if (!vis[i]) {p[++p[0]] = i; mbs[i] = -1;}
for (j = 1;j <= p[0] && i * p[j] <= N; j++)
{
vis[i*p[j]] = 1;
if (i % p[j] == 0) {mbs[i*p[j]] = 0; break;}
mbs[i*p[j]] = - mbs[i];
}
}
}