莫比乌斯函数

莫比乌斯函数

定义

\[\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];
			}
		}
	}
}
posted @ 2024-05-30 16:12  GuTongXing  阅读(23)  评论(0)    收藏  举报