
莫比烏斯函數的形式就是這樣 其中p1-pk 為不相同的質數
性質 : 如果μ(n)=1; 除了n=1時 1-n的和為1 其他都為0;
線篩求莫比烏斯函數
#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=1e5+10; int mu[maxn]; int prime[maxn]; int vis[maxn]; int cnt=0; void get_mu(int n) { mu[1]=1; for(int i=2;i<=n;i++) { if(!vis[i]){ prime[++cnt]=i; mu[i]=-1;} for(int j=1;j<=cnt&&prime[j]*i<=n;j++) { vis[prime[j]*i]=1; if(i%prime[j]==0)break; else mu[i*prime[j]]=-mu[i]; } } } int32_t main() { get_mu(maxn); cout<<mu[15]<<endl; }
