莫比乌斯
一:莫比乌斯函数
定义:μ 为莫比乌斯函数,定义为
\[\mu \left ( n\right )=\left\{\begin{matrix}
1 & n=1 \\
0& n含有平方因子\\
\left ( -1\right ) ^{k} & n=p_{1}p_{2}p_{3}\cdots p_{k}
\end{matrix}\right.\]
性质1:
\[\sum_{d|n}\mu \left ( d\right )=\left\{\begin{matrix}
1 & n=1\\
0 & n\neq 1
\end{matrix}\right.\]
即\(\sum_{d|n}\mu \left ( d\right )=\varepsilon \left ( n\right )\),即\(\mu *1 = \varepsilon\)
性质2:
\[\sum_{d|n}\frac{\mu \left ( d\right )}{d} = \frac{\phi \left ( n\right )}{n}\]
反演结论:
\[\left [ gcd\left ( i,j\right )=1\right ]\Leftrightarrow \sum_{d|gcd\left ( i,j\right )}\mu \left ( d\right )\]
根据定义:线性筛莫比乌斯函数
1 bool prime[maxn]; 2 int Prime[maxn],mu[maxn],tot; 3 void get_mu(){ 4 memset(prime,true,sizeof(prime)); 5 prime[0]=prime[1]=false; 6 tot=0; 7 8 mu[1]=1; 9 for(int i=2;i<=n;i++){ 10 if( prime[i] ) Prime[++tot]=i,mu[i]=-1; 11 for(int j=1;j<=tot&&i*Prime[j]<=n;j++){ 12 prime[i*Prime[j]]=false; 13 if( i%Prime[j]==0 ){ 14 mu[i*Prime[j]]=0; 15 break; 16 } 17 mu[i*Prime[j]]=-mu[i]; 18 } 19 } 20 }
二:莫比乌斯反演
约数公式:
设 \(f\left ( n\right ),g\left ( n\right )\) 为两个数论函数
如果有\[f\left ( n\right )=\sum_{d|n}g\left ( d\right )\]
那么有\[g\left ( n\right )=\sum_{d|n}\mu \left ( d\right )f\left ( \frac{n}{d}\right )\]
证明:已知\(f=g*1\),则\(f*\mu =g*1*\mu \Rightarrow f*\mu =g\left ( 其中1*\mu =\varepsilon \right )\)
倍数公式:
设 \(f\left ( n\right ),g\left ( n\right )\) 为两个数论函数
如果有\[f\left ( n\right )=\sum_{n|d}g\left ( d\right )\]
那么有\[g\left ( n\right )=\sum_{n|d}\mu \left ( \frac{d}{n}\right )f\left ( d\right )\]