莫比乌斯反演
莫比乌斯函数\(\mu(n)\):有\(n = p_1^{a_1} *p_2^{a_2}\cdots p_t^{a_t}\),则
\[\mu(n)=
\left\{
\begin{aligned}
1\qquad& ,n=1\\
(-1)^k \qquad&,n = p_1p_2\dots p_k,\forall p_i\neq p_j\\
0 \qquad&,others
\end{aligned}
\right.
\]
性质:
\(1.\) \(n\)不为\(1\)的时候,\(n\)所有因子的莫比乌斯函数值的和为\(0\)。
\[\sum_{d|n}^n\mu(d)=\left\{
\begin{aligned}
1 \qquad& ,n = 1\\
0 \qquad &,others
\end{aligned}
\right.
\]
\(2.\) 对于\(n\in N_+\)有
\[\sum_{d|n}^n\frac{\mu(d)}{d} = \frac{\varphi(n)}{n}
\]
莫比乌斯反演定理:\(F(n),f(n)\)为算术函数,若他们满足
\[F(n) = \sum_{d|n}f(d)
\]
则有
\[f(n) = \sum_{d|n}\mu(d)F(\frac{n}{d})
\]
常用推论为:若有\(F(n) = \sum_{n|d}f(d)\),则有\(f(n) = \sum_{n|d}\mu(\frac{d}{n})F(d)\)
\[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)\\
\sum_{d|n}\mu(d)=[n=1]
\]
线性筛莫比乌斯函数
int mu[maxn], vis[maxn];
int prime[maxn], cnt;
void getmu(int n){
memset(vis, 0, sizeof(vis));
cnt = 0;
mu[1] = 1;
for(int i = 2; i <= n; i++) {
if(!vis[i]){
prime[cnt++] = i;
mu[i] = -1;
}
for(int j = 0; j < cnt && prime[j] * i <= n; j++){
vis[prime[j] * i] = 1;
if(i % prime[j] == 0){
mu[i * prime[j]] = 0;
break;
}
mu[i * prime[j]] = -mu[i];
}
}
}