莫比乌斯函数模板
线性筛:
const int maxn=5e4+7;
int mu[maxn];
bool vis[maxn];
vector<int>prime;
inline void init() {
mu[1]=1;
for(int i=2;i<maxn;++i) {
if(!vis[i]) {
prime.emplace_back(i); mu[i]=-1;
}
for(auto &j:prime) {
if(i*j>=maxn) break;
vis[i*j]=1;
if(i%j==0) break;
mu[i*j]=-mu[i];
}
}
}埃塞:
mu[1] = 1;
for (int i = 1; i < maxn; i++) {
for (int j = 2 * i; j < maxn; j += i)
mu[j] -= mu[i];
} 莫比乌斯反演 文章被收录于专栏
NULL
