莫比乌斯反演及的证明与应用

莫比乌斯反演

〇、前置芝士

1、整除分块

问题:洛谷P1403 [AHOI2005]约数研究
题目大意:设 f ( x ) f(x) f(x) x x x的约数个数,求 ∑ i = 1 n f ( i ) \sum_{i=1}^{n}f(i) i=1nf(i)
题解:从1~ n n n中,含有约数 i i i的数的个数为 ⌊ n i ⌋ ⌊\frac{n}{i}⌋ in,因此 a n s = ∑ i = 1 n ⌊ n i ⌋ ans=\sum_{i=1}^{n}⌊\frac{n}{i}⌋ ans=i=1nin
但我们发现有许多 ⌊ n i ⌋ ⌊\frac{n}{i}⌋ in是重复的。设 j = n ⌊ n i ⌋ j=\frac{n}{⌊\frac{n}{i}⌋} j=inn,即有 j j j个数 t t t使得 ⌊ n i ⌋ ≤ ⌊ n j ⌋ ⌊\frac{n}{i}⌋\leq⌊\frac{n}{j}⌋ injn,因此对于每个 ⌊ n i ⌋ ⌊\frac{n}{i}⌋ in ( j − i + 1 ) (j-i+1) (ji+1)个重复项。

for(int i=1,j;i<=n;i=j+1)
{
    j=n/(n/i);
    ans+=(n/i)*(j-i+1);
}
2、欧拉函数 ϕ ( x ) \phi(x) ϕ(x)

定义:1~ x x x中与 x x x互质数的数量。
公式(后面证): ϕ ( x ) = n ∏ i = 1 k ( 1 − p i ) , p i ∈ p r i m e , p i ∣ x . \phi(x)=n\prod_{i=1}^{k}(1-p_i),p_i\in{prime},p_i|x. ϕ(x)=ni=1k(1pi),piprime,pix.
性质(后面证): ∑ d ∣ n ϕ ( d ) = n . \sum_{d|n}\phi(d)=n. dnϕ(d)=n.
线性筛法:

int phi[maxn],prime[maxn],num[maxn];
int prime_num;
void cal()
{
    phi[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!num[i])
        {
        	//质数只与自身不互质
            prime[++prime_num]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=prime_num&&i*prime[j]<=n;j++)
        {
            num[prime[j]*i]=1;
            //含有此质数因子,只改变n的值
            if(i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            //二者互质,利用积性函数的性质
            phi[i*prime[j]]=phi[i]*phi[prime[j]];
        }
    }
}

一、莫比乌斯函数

1、莫比乌斯函数的定义:
  • 当n不等于1时,n所有因子的莫比乌斯函数值的和为0。
    即: ∑ d ∣ x μ ( d ) = { 1 x=1 0 x>1 \sum_{d|x}\mu(d)= \begin{cases} 1& \text{x=1}\\ 0 & \text{x>1} \end{cases} dxμ(d)={10x=1x>1
  • 从通俗上讲,它有如下几个特征:
    1)莫比乌斯函数μ(n)的定义域是正整数
    2)μ(1)=1
    3)当n存在平方因子时,μ(n)=0
    4)当n是素数或奇数个不同素数之积时,μ(n)=-1
    5)当n是偶数个不同素数之积时,μ(n)=1

μ ( x ) = { 1 x=1 ( − 1 ) k x= p 1 p 2 . . . p k 0 其余情况 \mu(x)= \begin{cases} 1& \text{x=1}\\ (-1)^k & \text{x=$p_1p_2...p_k$}\\ 0 & \text{其余情况} \end{cases} μ(x)=1(1)k0x=1x=p1p2...pk其余情况

2、程序实现线性筛 μ \mu μ
int prime[maxn],num[maxn],mu[maxn],p_num;
void get_mu()
{
    mu[1]=1;
    for(int i=2;i<maxn;i++)
    {
        if(!num[i])
        {
        	//质数的莫比乌斯函数都是-1
            prime[++p_num]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=p_num&&i*prime[j]<maxn;j++)
        {
            num[i*prime[j]]=1;
            //i中不含有约数prime[j],质约数个数+1
            if(i%prime[j]) mu[i*prime[j]]=-mu[i];
            //出现平方因子即为0
            else
            {
                mu[i*prime[j]]=0;
                break;
            }
        }
    }
}

二、莫比乌斯函数与容斥定理

1、求欧拉函数

ϕ ( x ) = ∑ i = 1 x [ g c d ( i , x ) = 1 ] \phi(x)=\sum_{i=1}^{x}[gcd(i,x)=1] ϕ(x)=i=1x[gcd(i,x)=1]

考虑容斥原理。在 x x x个数中,要先扣除所有质因数及其倍数。然后我们发现那些两个质因数乘积的倍数被重复扣除,因此要把它们再加回来。紧接着又发现三个质因数乘积的数等于没扣除,又要再次扣除…最后我们发现每个数的容斥系数就是它的莫比乌斯函数!即:
ϕ ( x ) = ∑ d ∣ x μ ( d ) ⌊ x d ⌋ \phi(x)=\sum_{d|x}\mu(d)⌊\frac{x}{d}⌋ ϕ(x)=dxμ(d)dx
= n − ∑ n p i + ∑ n p i p j − . . . + ( − 1 ) k ∑ n p 1 p 2 . . . p k =n-\sum\frac{n}{p_i}+\sum\frac{n}{p_ip_j}-...+(-1)^k\sum\frac{n}{p_1p_2...p_k} =npin+pipjn...+(1)kp1p2...pkn
= n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) . . . ( 1 − 1 p k ) =n(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k}) =n(1p11)(1p21)...(1pk1)
= n ∏ i = 1 k ( 1 − 1 p i ) =n\prod_{i=1}^{k}(1-\frac{1}{p_i}) =ni=1k(1pi1)

2、实战演练:

XMU区预赛选拔 D.塔子哥数数

3、总结

数论中的很多计数问题,当以1为最小元时,容斥系数通常为 ( − 1 ) k (-1)^k (1)k;以质数为最小元时,容斥系数通常为莫比乌斯函数。我们就可以通过线性筛莫比乌斯函数来进行容斥简化计算。

三、莫比乌斯反演

1、莫比乌斯反演
  • 形式一:
    设有函数 f ( x ) f(x) f(x) F ( x ) F(x) F(x),且有
    F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum_{d|n}f(d) F(n)=dnf(d)
    则有:
    f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d}) f(n)=dnμ(d)F(dn)
  • 形式二:
    设有函数 f ( x ) f(x) f(x) F ( x ) F(x) F(x),且有
    F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum_{n|d}f(d) F(n)=ndf(d)
    则有:
    f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) f(n)=ndμ(nd)F(d)

其中形式一为基本形式,但形式二更为常用。

2、莫比乌斯反演的证明
  • 形式一:
    已知: F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum_{d|n}f(d) F(n)=dnf(d),则:
    ∑ d ∣ n μ ( d ) F ( n d ) \sum_{d|n}\mu(d)F(\frac{n}{d}) dnμ(d)F(dn)
    = ∑ d ∣ n μ ( d ) ∑ i ∣ n d f ( i ) =\sum_{d|n}\mu(d)\sum_{i|\frac{n}{d}}f(i) =dnμ(d)idnf(i)
    = ∑ d ∣ n ∑ i ∣ n d μ ( d ) f ( i ) =\sum_{d|n}\sum_{i|\frac{n}{d}}\mu(d)f(i) =dnidnμ(d)f(i)
    = ∑ i d ∣ n μ ( d ) f ( i ) =\sum_{id|n}\mu(d)f(i) =idnμ(d)f(i)
    = ∑ i ∣ n ∑ d ∣ n i μ ( d ) f ( i ) =\sum_{i|n}\sum_{d|\frac{n}{i}}\mu(d)f(i) =indinμ(d)f(i)
    = ∑ i ∣ n f ( i ) ∑ d ∣ n i μ ( d ) =\sum_{i|n}f(i)\sum_{d|\frac{n}{i}}\mu(d) =inf(i)dinμ(d)
    由莫比乌斯函数定义,
    ∑ d ∣ n i μ ( d ) = { 1 i=n 0 i<n \sum_{d|\frac{n}{i}}\mu(d)= \begin{cases} 1& \text{i=n}\\ 0 & \text{i<n} \end{cases} dinμ(d)={10i=ni
    因此

    原式 = f ( n ) =f(n) =f(n)

  • 形式二:
    已知: F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum_{n|d}f(d) F(n)=ndf(d),则:
    ∑ n ∣ d μ ( d n ) F ( d ) \sum_{n|d}\mu(\frac{d}{n})F(d) ndμ(nd)F(d)
    = ∑ n ∣ d μ ( d n ) ∑ d ∣ i f ( i ) =\sum_{n|d}\mu(\frac{d}{n})\sum_{d|i}f(i) =ndμ(nd)dif(i)
    = ∑ n ∣ i f ( i ) ∑ n ∣ d , d ∣ i μ ( d n ) =\sum_{n|i}f(i)\sum_{n|d,d|i}\mu(\frac{d}{n}) =nif(i)nd,diμ(nd)
    k = d n k=\frac{d}{n} k=nd。枚举 k k k
    = ∑ n ∣ i f ( i ) ∑ k ∣ i n μ ( k ) =\sum_{n|i}f(i)\sum_{k|\frac{i}{n}}\mu(k) =nif(i)kniμ(k)
    由莫比乌斯函数定义,

    原式 = f ( n ) =f(n) =f(n)

四、莫比乌斯反演的应用

1、证明上文提到的欧拉函数性质

我们由容斥定理得到了 ϕ ( x ) = ∑ d ∣ x μ ( d ) ⌊ x d ⌋ \phi(x)=\sum_{d|x}\mu(d)⌊\frac{x}{d}⌋ ϕ(x)=dxμ(d)dx。设 F ( x ) = x F(x)=x F(x)=x。由莫比乌斯反演的逆过程,有:
F ( x ) = ∑ d ∣ x ϕ ( x ) = x . F(x)=\sum_{d|x}\phi(x)=x. F(x)=dxϕ(x)=x.

2、一些题目

1、洛谷P3455 [POI2007]ZAP-Queries

你可能感兴趣的:(数论与组合数学)