zoukankan      html  css  js  c++  java
  • 数论之莫比乌斯反演

    莫比乌斯反演

    Tips:本篇blog实际上是一篇听课笔记,记录的马宗民老师在初等数论的视频中所讲的积性函数章节的大部分知识,本篇blog涉及的所有公式在马宗民老师的视频中都有详细的证明求解。由于本blog篇幅有限,只给出了Dirichlet积这一节之后的所有公式的证明,在此之前的公式都只给出了定义,若想深入了解公式的证明过程可以观看马宗民老师的视频,在优酷搜索关键字:初等数论即可找到视频。在这里本人向马宗民老师表示感谢,感谢老师的无私奉献,感谢老师做出这么好的授课视频分享给我们。

    积性函数

    积性函数:对于任意的两个正整数n,m,要求`(gcd(n,m)=1),有(f(n*m)=f(n)*f(m));如欧拉函数。

    完全积性函数:对于任意的两个正整数n,m,有(f(n*m)=f(n)*f(m));如幂函数:(f(x)=x^t)

    正整数正因数个数:

    我们记正整数正因数个数为d(n),那么会有如下公式:

    [d(n) = sum_{d|n}1 ]

    这里的 (d|n) ,代表n整除d,也就是说,d是n的因子,所以就是求d的个数
    将n进行素数分解得到:(n=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k})
    根据乘法原理:(d(n)=(a_1 + 1)*(a_2 + 1)*...*(a_k + 1))
    d(n)是积性函数,所以对于任意的两个正整数n,m,若(gcd(a,b)=1)则会有(d(n*m) = d(n)*d(m))

    正整数正因数之和:

    我们记正整数正因数之和为σ(n),那么会有如下公式:

    [σ(n) = sum_{d|n}d ]

    我们先证明一个式子:
           
    (d|n),则就会有(n=c*d),那么(c=n/d),称之为d的共轭,这样一来我们就可以得到下面的式子:

    [sum_{d|n}d = sum_{d|n}frac{n}{d} ]

           
    这个公式十分重要,在后面的莫比乌斯反演中会反复用到,务必记下!
           
    下面我们推导一下σ(n)的公式:
           
           
    若p为素数,(n = p^k),就会有(σ(n)=σ(p^k)=1+p^1+p^2+...+p^k=frac{p^{k+1}-1}{p-1})(等比数列求和公式)
           
           
    以上是针对n为一个素数的k倍的时候,当n不是素数的时候,我们可以将其进行素数分解进行求解,下面直接给出公式:

    [n=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k} ]

    [σ(n)=frac{p_1^{a_1+1}-1}{p_1-1}*frac{p_2^{a_2+1}-1}{p_2-1}*...*frac{p_k^{a_k+1}-1}{p_k-1} ]

    定理:若n和m是互质的,则(σ(n*m)=σ(n)*σ(m)),所以σ(n)为积性函数

    莫比乌斯函数

    对于一个正整数n,有如下定义:

    [n=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k} ]

    [μ(n)=egin{cases} (-1)^k & a_1=a_2=a_3=...=a_k=1 \ 0 & other end{cases} ]

    我们规定 (μ(1) = 1)
    定理1:若p为素数,(μ(p) = -1)
    定理2:若n,m互质,则(μ(n*m) = μ(n)*μ(m)),μ(n)为积性函数
    定理3(莫比乌斯求和公式):

    [sum_{d|n}μ(d) = lfloor frac{1}{n} floor ]

    欧拉函数

    定义:φ(n)表示不超过n且与n互质的正整数个数。
    φ(n)有如下式子

    [φ(n)=sum_{k=1}^n lfloor frac{1}{gcd(n,k)} floor ]

    定理1:

    [sum_{d|n}φ(d) = sum_{d|n}φ(frac{n}{d}) = n ]

    注意:这和莫比乌斯函数的求和函数十分像,别搞混了
    定理2:

    [φ(n)=sum_{d|n} μ(d)* frac{n}{d} ]

    定理3:

    [φ(n)=n*prod_{p|n}(1-frac{1}{p}) ]

    这里的p,表示n的所有质因子。

    推论1:

    [φ(p^α)=(p-1)*p^{α-1} ]

    推论2,对于任意的正整数n,m:

    [φ(n*m)=φ(n)*φ(m)*lfloor frac{d}{φ(d)} floor ]

    [d = gcd(n, m) ]

    推论3:

    [a|b Rightarrow φ(a)|φ(b) ]

    Dirichlet积(卷积函数)

    定义:若f、g是两个函数,定义一种运算:

    [f*g=sum_{d|n}f(d)*g(frac{n}{d}) ]

    下面展示两个应用:
           
    我们定义一个函数(N(x)=x)这里的x都是正整数,我们就有下面的推论:

    [μ*N=sum_{d|n}μ(d)*N(frac{n}{d})=sum_{d|n}μ(d)*frac{n}{d}=φ ]

    [μ*N=φ ]

           
    卷积函数是满足乘法交换律的:(φ=N*μ=μ*N)
           
    卷积函数是满足乘法结合律的:((f*g)*h=f*(g*h))

           
    (I(n)=lfloor frac{1}{n} floor)为恒等函数
           
           
    我们定义一个函数(u(n)=1),n是正整数,这也是一个完全积性函数

    [I=u*μ=sum_{d|n}μ(d)*u(frac{n}{d})=sum_{d|n}μ(d) ]

           
           
    可以证明(I(n))也是完全积性函数

           
    我们下面来证明这个结论:若f为一个函数,则(f*I=f)

    [f*I=sum_{d|n}f(d)*I(frac{n}{d}) ]

    [I(frac{n}{d})=lfloor frac{1}{frac{n}{d}} floor = lfloor frac{d}{n} floor ]

           
    因为(1leq d leq n)
           
    所以只有(d=n)的时候(lfloor frac{d}{n} floor=1)才会有意义,因为别的情况下都是0,这是没有意义的
           
    所以:(f*I=f(n)*I(frac{n}{n})=f)
           
    所以(I)为恒等函数

    Dirichlet逆

    定义:若f、g是两个函数,若f、g满足下面式子:

    [f*g=I ]

    则我们称(f)(g)互为逆,记(g)(f^{-1})
    最经典、最简单的性质:(μ=u^{-1})

    莫比乌斯反演

    定义:

    [f(n)=sum_{d|n}g(d) Rightarrow g(n)=sum_{d|n}f(d)*μ(frac{n}{d}) ]

    证明:

    [u(n)=1 Rightarrow u(frac{n}{d})=1 ]

    [f(n)=sum_{d|n}g(d)=sum_{d|n}g(d)*u(frac{n}{d}) ]

    用Dirichlet积可将上式化简得:

    [f=g*u ]

    两边同乘一个莫比乌斯函数(这里的乘式指Dirichlet积):

    [f*μ=g*u*μ=g*(u*μ)=g*I=g ]

    [g=f*μ=sum_{d|n}f(d)*μ(frac{n}{d}) ]

    证毕

    现在展示用法:
           
    证明欧拉函数中的定理1,即:

    [sum_{d|n}φ(d)=n ]

           
    我们构造一个函数(N(x)=x),x为正整数
           
    我们已知:

    [φ(n)=sum_{d|n}μ(d)*frac{n}{d}=sum_{d|n}μ(frac{n}{d})*d ]

    [φ(n)=sum_{d|n}μ(frac{n}{d})*N(d)=μ*N=N*μ ]

           
    两边同时乘上(u(n)=1),得:

    [φ*u=N*(μ*u)=N ]

    [N=φ*u=sum_{d|n}φ(d)*u(frac{d}{n})=sum_{d|n}φ(d) ]

    [n=sum_{d|n}φ(d) ]

           
    证毕

    Mangoldt function 记为Λ(n)

    [Λ(n)=egin{cases} ln(p) & n=p^m,mgeq1\ 0 & other end{cases} ]

    证明:(ln(n)=sum_{d|n}Λ(d))

    [n=p_1^{a_1}*p_2^{a_2}*p_3^{a_3}*...*p_r^{a_r} ]

    [ln(n) = ln(prod_{i=1}^{r}p_i^{a_i})=sum_{i=1}^{r}ln(p_i^{a_i})=sum_{i=1}^{r}a_i*ln(p_i) ]

    [sum_{d|n}Λ(d)=sum_{d|p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}}Λ(d)=sum_{k=1}^{r}sum_{m=1}^{a_k}Λ(p_{k}^{m})=sum_{k=1}^{r}sum_{m=1}^{a_k}ln(p_k)=sum_{k=1}^{r}a_k*ln(p_k) ]

    [ln(n)=sum_{d|n}Λ(d) ]

    证毕

    定义:(Λ(n)=-sum_{d|n}ln(d)*μ(d))
    证明:
    (f(n)=ln(n))(u(x)=1)则会有下面的推导:

    [f(n)=ln(n)=sum_{d|n}Λ(d)=sum_{d|n}Λ(d)*u(frac{n}{d})=Λ*u ]

    我们在两边同乘上莫比乌斯函数(μ):

    [f*μ=Λ*u*μ=Λ*I=Λ ]

    我们再利用Dirichlet积将左边展开:

    [Λ=sum_{d|n}f(d)*μ(frac{n}{d})=sum_{d|n}f(frac{n}{d})*μ(d)=sum_{d|n}(ln(n)-ln(d))*μ(d) ]

    展开上式:

    [Λ=sum_{d|n}ln(n)*μ(d)-sum_{d|n}ln(d)*μ(d)=ln(n)*I(n)-sum_{d|n}ln(d)*μ(d) ]

    我们分析一下上个式子前一项:

    [ln(n)=egin{cases} 0 & n=1 \ eq 0 & other end{cases} ]

    [I(n)=egin{cases} 1 & n=1\ 0 & other end{cases} ]

    所以这两个函数一乘,就变为0了,我们可以直接去掉,所以就会有下面的公式:

    [Λ(n)=-sum_{d|n}ln(d)*μ(d) ]

    证毕

  • 相关阅读:
    《软件过程管理》阅读笔记3
    《软件过程管理》阅读笔记1
    《深度学习—智能时代的核心驱动力量》阅读笔记4
    《深度学习—智能时代的核心驱动力量》阅读笔记3
    《深度学习—智能时代的核心驱动力量》阅读笔记2
    《深度学习—智能时代的核心驱动力量》阅读笔记1
    软件杯赛题周总结(6)
    软件杯赛题周总结(5)
    esp32 arduino 蓝牙 使用uln2003 驱动四相五线步进电机备忘
    Oracle——在不安装oracle客户端的情况下,使用PLSQL
  • 原文地址:https://www.cnblogs.com/DynastySun/p/9477464.html
Copyright © 2011-2022 走看看