莫比乌斯反演

 

 

bitset<maxn> is_prime;
int prime[maxn], prime_cnt;
int mu[maxn];
ll premu[maxn];

void get_prime(int n) {
    is_prime[1] = 1;
    mu[1] = 1;
    for(int i = 2; i <= n; i++) {
        if(!is_prime[i]) {
            prime[++prime_cnt] = i;
            mu[i] = -1;
        }
        for(int j = 1; j <= prime_cnt && i * prime[j] <= n; j++) {
            is_prime[i * prime[j]] = 1;
            if(i % prime[j] == 0) break; 
            mu[i*prime[j]] = -mu[i];
        }
    }
}

 

posted @ 2020-05-15 11:44  Ruby·Z  阅读(36)  评论(0编辑  收藏  举报