莫比乌斯反演学习笔记
前言
之前学了一遍,只学了朴素的莫比乌斯反演,现在第二次面对不知道能否有所长进。
性质
莫比乌斯反演是数论中的重要内容。对于一些函数 \(f(n)\),如果难以直接求出它的值,但容易求得其倍数和或约数和 \(g(n)\),那么可以通过莫比乌斯函数反演简化运算,从而求得 \(f(n)\) 的值。
前置知识
数论分块+狄利克雷卷积。
莫比乌斯函数
\(\mu\) 为莫比乌斯函数,定义为:
\[\mu(n)= \begin{cases} 1&n=1\\ 0&n\text{ 含有平方因子}\\ (-1)^k&k\text{ 为 }n\text{ 的本质不同质因子个数}\\ \end{cases} \]即对于 \(n=\prod p_i^{\alpha_i}\):
\[\mu(n)= \begin{cases} 1&n=1\\ 0&\exists \alpha_i\ge 2\\ (-1)^i&\forall\alpha_i=1\\ \end{cases} \]容易看出,莫比乌斯函数是积性函数,同时满足以下性质:
\[\sum_{d|n}\mu(d)=\begin{cases} 1&n=1\\ 0&n\ne 1 \end{cases} \]求解
由于莫比乌斯函数是积性函数,所以可以采用线性筛求解。
代码
void get_miu(int N){
miu[1]=1;
for(int i=2;i<=N;i++){
if(!vis[i]){
p[++cnt]=i;
miu[i]=-1;
}
for(int j=1;p[j]<=N/i;j++){
vis[i*p[j]]=1;
if(i%p[j]==0)break;//说明其含有平方因子,不做处理
else miu[i*p[j]]=-miu[i];//否则根据积性函数的性质求解
}
}
return ;
}
莫比乌斯变换
有以下两种形式,即文章开头提及的约数和和倍数和的形式。
约数和:如果 \(F(n)=\sum_{d|n}f(d)\),那么 \(f(n)=\sum_{d|n}\mu(\frac{n}{d})F(d)\)。
倍数和:如果 \(F(n)=\sum_{n|d}f(d)\),那么 \(f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)\)。
标签:乌斯,sum,mu,反演,莫比,cases From: https://www.cnblogs.com/DycBlog/p/18111525