狄利克雷生成函数

对于无穷序列 f1,f2,... ,定义其狄利克雷生成函数为:

F~(x)=i1fiix

(全文都是以 DGF 为基础)

如果序列 f 满足积性:ij,fij=fifj ,那么其 DGF 可以有质数幂处的取值表示

F(x)=pP(1+fppx+fp2p2x+...)

对于两个序列 f,g ,其 DGF 之积对应的是两者的狄利克雷卷积序列的 DGF

F(x)G(x)=ijfigj(ij)x=i1ixd|ifdgid

常见积性函数的 DGF

黎曼函数

  • 序列 [1,1,...] 的 DGF 是 i11ix=ζ(x)

  • 由于满足积性,因此可以得到 [1,1,...] 的 DGF 的另一种形式:

ζ(x)=pP(1+1px+1p2x+...)=pP11px

莫比乌斯函数

  • 对于莫比乌斯函数 μ,它的 DGF 定义为

M(x)=pP(11px)=pP(1px)

  • M(x) 在 DGF 下是全 1 序列的逆元,那么 M(x)ζ(x)=1

欧拉函数

  • 它的 DGF 定义为

Φ(x)=pP(1+p1px+p2pp2x+...)=pP1px1px+1

  • 那么可以发现 Φ(x)=ζ(x1)ζx

幂函数

  • 对于 Ik(n)=nk ,它的 DGF 的定义为

Ik(x)=pP(1+pkpx+p2kp2x+...)=pP11pkx=pPζ(xk)

  • 根据定义容易证明 φ(x)1=I ,因为 Φ(x)ζ(x)=ζ(x1)=I

其他函数

  • 对于约数幂函数 σk(n)=d|ndk ,它的狄利克雷卷积的形式:S(x)=ζ(xk)ζ(x)

  • 对于 u(n)=|μ(n)| (无平方因子数),它的 DGF 为 U(x)=pP(1+px)=ζ(x)ζ(2x)

积性函数的逆元仍然是积性函数

Dirichlet 卷积

定义

  • 对于两个数论函数 f(x)g(x) ,则它们的狄利克雷卷积得到的结果 h(x) 定义为:

h(x)=d|xf(d)g(nd)=ab=xf(a)g(b)

  • 上式可以简记为 h=fg

  • 两个 DGF 的积对应两者的狄利克雷卷积的狄利克雷生成函数

F(x)G(x)=ijfigj(ij)x=i1ixd|ifdgi/d

性质

  • 交换律

  • 结合律

  • 分配律

  • 等式的性质:f=g 的充要条件是 fh=gh ,其中数论函数 h(1)0

单位元

单位函数 ε 是 Dirichlet 卷积运算中的单位元,即对于任何数论函数 f ,都有 fε=f

单位元在卷积运算中不是常函数,但是在狄利克雷生成函数中等价于常数 1

卷积运算中数论函数常函数 1 ,在狄利克雷生成函数中等价于黎曼函数 ζ

逆元

对于任何一个满足 f(1)0 的数论函数,如果有另一个数论函数 g(x) 满足 fg=ε

,则 g(x)f(x) 的逆元,由 等式的性质 可知,逆元唯一

卷积运算中的逆元,相当于狄利克雷生成函数中的倒数运算

  • 容易构造出 g(x) 的表达式为:

g(x)=[x=1]d|x,d1f(d)g(xd)f(1)

  • 考虑将 g(x)f(1)=.. .就知道为什么了

重要结论

  • 两个积性函数的狄利克雷卷积仍然是积性函数

  • 积性函数的逆元也是积性函数

ε=μ1d=11σ=id1φ=μidid=φ1

例题

LGP2257 YY GCD

  • 就是求 i=1i=nj=1j=m[gcd(i,j)]

  • 一个常见的想法是枚举 gcd(i,j) ,这里提供另一种想法

  • 对于 gcd(i,j) 有一个性质 gcd(i,j)|i,gcd(i,j)|j

  • 那么如果一个函数关于 gcd(a,b) 的函数 f(gcd(a,b))=d|ad|bg(d)

  • 假如这个 f 很好求,那么就可以预处理出 g ,然后将式子里面的 f 都换成 g

  • 这里的 f 显然是是否为质数,那么我们需要构造一个 g ,使得 f=g1 ,这样就能通过反演预处理出 g=μf

  • 现在我们预处理出了 g ,那么原式就变成了 i=1i=nj=1j=md|id|jg(d)

  • 这个式子就很熟悉了,枚举 d 然后数论分块

简单题

  • i=1nj=1mgcd(i,j)

  • T104,n,m106 ,答案取模

  • 这次的 f=id ,那么 g=φ

  • 那么就是求 i=1nj=1md|id|jφ(d)

  • 这个就是我们很熟悉的形式了

难题

  • (还是来凑数的题)

  • 给出数列 f1...fn

  • 每次问 i=1nj=1mfgcd(i,j)

  • 你是不是在想 i=1nj=1mfd|id|jφ(d)

  • 不不不,我们将整个 fgcd(i,j) 看成函数,那么构造 g=μf ,这个东西可以直接通过定义来求

  • 那么就可以直接转换成 i=1nj=1md|ad|bg(d)

  • 是不是突然发现这方法是真的好用!!

posted @   Kzos_017  阅读(244)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示