莫比乌斯反演

莫比乌斯函数\(\mu(n)\):有\(n = p_1^{a_1} *p_2^{a_2}\cdots p_t^{a_t}\),则

\[\mu(n)= \left\{ \begin{aligned} 1\qquad& ,n=1\\ (-1)^k \qquad&,n = p_1p_2\dots p_k,\forall p_i\neq p_j\\ 0 \qquad&,others \end{aligned} \right. \]

性质:
\(1.\) \(n\)不为\(1\)的时候,\(n\)所有因子的莫比乌斯函数值的和为\(0\)

\[\sum_{d|n}^n\mu(d)=\left\{ \begin{aligned} 1 \qquad& ,n = 1\\ 0 \qquad &,others \end{aligned} \right. \]

\(2.\) 对于\(n\in N_+\)

\[\sum_{d|n}^n\frac{\mu(d)}{d} = \frac{\varphi(n)}{n} \]

莫比乌斯反演定理:\(F(n),f(n)\)为算术函数,若他们满足

\[F(n) = \sum_{d|n}f(d) \]

则有

\[f(n) = \sum_{d|n}\mu(d)F(\frac{n}{d}) \]

常用推论为:若有\(F(n) = \sum_{n|d}f(d)\),则有\(f(n) = \sum_{n|d}\mu(\frac{d}{n})F(d)\)

\[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)\\ \sum_{d|n}\mu(d)=[n=1] \]

线性筛莫比乌斯函数

int mu[maxn], vis[maxn];
int prime[maxn], cnt;
void getmu(int n){
    memset(vis, 0, sizeof(vis));
    cnt = 0;
    mu[1] = 1;
    for(int i = 2; i <= n; i++) {
        if(!vis[i]){
            prime[cnt++] = i;
            mu[i] = -1;
        }
        for(int j = 0; j < cnt && prime[j] * i <= n; j++){
            vis[prime[j] * i] = 1;
            if(i % prime[j] == 0){
                mu[i * prime[j]] = 0;
                break;
            }
            mu[i * prime[j]] = -mu[i];
        }
    }
}
posted @ 2019-08-28 19:34  KirinSB  阅读(190)  评论(0编辑  收藏  举报