定义:形如以下形式的函数叫做莫比乌斯函数。
性质:
其中 [m=1]代表m=1的时候为1. m不等于1的时候为0。
这个性质可由狄利克雷卷积推出。
如何求出莫比乌斯函数
与欧拉函数一样,莫比乌斯函数也可以通过质数筛求出。
值得注意的一件事是,所有的积性函数都可以通过质数筛求出
代码如下:
//欧拉筛求莫比乌斯函数
//复杂度O(n)
# include<iostream>
# include<string.h>
using namespace std;
const int maxn = 2e5 + 5;
int prime[maxn];
bool check[maxn];
int moblus[maxn];
void Moblus(int n){
int cnt = 0;
moblus[1] = 1;
memset(check, false, sizeof(check));
for(int i = 2; i <= n; i++){
if(!check[i]){
prime[++cnt] = i;
moblus[i] = -1;
}
for(int j = 1; j <= cnt && i * prime[j] <= n; j++){
check[i * prime[j]] = true;
if(!(i % prime[j])){
moblus[i * prime[j]] = 0;
break;
}
else
moblus[i * prime[j]] = -moblus[i];
}
}
}
int main(){
int n;
cin >> n;
Moblus(n);
cout << moblus[n] << endl;
return 0;
}