莫比乌斯函数
莫比乌斯函数
定义
\[\mu(x)=
\left\{
\begin{matrix}
1 & x=1\\
(-1)^m & x=p_1\\
0&\texttt{other}
\end{matrix}
\right.
\]
求法
方法1. 直接暴力分解质因数
太水了。
方法2. 埃氏筛
\(O(n\log\log n)\)
不想写。
方法3. 线性筛
\(O(n)\)
void Euler_sieve(){
mu[1] = 1;
for(int i = 2;i<MAXN;i++){
if(!is_prime[i]){
prime[++prime[0]] = i;
mu[i] = -1;
}
for(int j = 1;j<=prime[0]&&i*prime[j]<MAXN;j++){
is_prime[i*prime[j]] = 1;
if(i%prime[j]==0){
mu[i*prime[j]] = 0;
break;
}else{
mu[i*prime[j]] = -mu[i];
}
}
}
}

浙公网安备 33010602011771号