莫比乌斯反演大都是处理(运用这个式子的题目始终没见过,见过了再说)和
(最常用的公式)
,说白了莫比乌斯反演就是加快和简化容斥集合的演算的作用,在数论中比较重要。
莫比乌斯反演的比较重要的性质:
对于u(d):
(1)若,那么
(2)若,
均为互异素数,那么
(3)其它情况下
还有如下一些性质:
(1)对任意正整数有
int vis[maxn];//记录用辅助数组
int mu[maxn];//保存u(d)的数组
int prime[maxn];//保存素数的数组
void Mobius()//莫比乌斯反演
{
mem(vis,0);
mu[1] = 1;
int cnt = 0;
for(int i = 2;i < maxn;i++)
{
if(!vis[i]){
prime[cnt++] = i;
mu[i] = -1;
}
for(int j = 0;j < cnt && i * prime[j] < maxn;j++)
{
vis[i * prime[j]] = 1;
if(i % prime[j])mu[i * prime[j]] = -mu[i];
else {
mu[i * prime[j]] = 0;
break;
}
}
}
}