狄利克雷卷积总结

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了狄利克雷卷积总结相关的知识,希望对你有一定的参考价值。

狄利克雷卷积总结

积性函数

常见的积性函数: φ , μ , σ , d \\large \\varphi,\\mu,\\sigma,d φ,μ,σ,d

常见的完全积性函数: ϵ , I , i d \\large \\epsilon,I,id ϵ,I,id

函数名数学表达式
欧拉函数 φ ( n ) \\varphi(n) φ(n)
莫比乌斯函数 μ ( n ) \\mu(n) μ(n)
元函数 ϵ ( n ) = [ n = 1 ] \\epsilon(n)=[n=1] ϵ(n)=[n=1]
恒等函数 I ( n ) = 1 I(n)=1 I(n)=1
约数个数函数 d ( n ) d(n) d(n)
约数和函数 σ ( n ) \\sigma(n) σ(n)
一次函数 i d ( n ) = n id(n)=n id(n)=n

狄利克雷卷积

在这里插入图片描述

狄利克雷卷积的性质

在这里插入图片描述

在这里插入图片描述

证明性质3

恒等函数在狄利克雷卷积中是相当于单位元的存在

f ∗ ϵ = f \\large f* \\epsilon =f fϵ=f

证明:

= ∑ d ∣ n f ( d ) ϵ ( n d ) \\large =\\sum\\limits_{d|n}f(d)\\epsilon(\\dfrac{n}{d}) =dnf(d)ϵ(dn)

当且仅当 d = n d=n d=n时, f ( d ) ϵ ( n d ) = f ( n ) ≠ 0 f(d)\\epsilon(\\dfrac{n}{d})=f(n)\\ne 0 f(d)ϵ(dn)=f(n)=0

f ∗ ϵ = f \\large f * \\epsilon = f fϵ=f

莫比乌斯反演的证明

g ( n ) = ∑ d ∣ n f ( d ) g(n)=\\sum\\limits_{d|n}f(d) g(n)=dnf(d)

f ( n ) = ∑ d ∣ n μ ( d ) g ( n d ) f(n)=\\sum\\limits_{d|n}\\mu(d)g(\\dfrac{n}{d}) f(n)=dnμ(d)g(dn)

证明:

利用 D i r i c h l e t Dirichlet Dirichlet卷积的性质即可: μ ∗ I = ϵ \\mu * I =\\epsilon μI=ϵ

给出的条件等价于

g = f ∗ I \\large g=f* I g=fI

g ∗ μ = f ∗ μ ∗ I = f ∗ ϵ = f \\large g*\\mu= f * \\mu * I =f * \\epsilon=f gμ=fμI=fϵ=f


杜教筛

杜教筛可用来在非线性时间求解积性函数的前缀和

在这里插入图片描述

引用一波,但是第一行没写好。

= ∑ i = 1 n ∑ d ∣ i f ( d ) g ( i d ) = ∑ i = 1 n ∑ d ∣ i f ( i d ) g ( d ) \\large=\\sum\\limits_{i=1}^n\\sum\\limits_{d|i} f(d)g(\\dfrac{i}{d})=\\sum\\limits_{i=1}^n\\sum\\limits_{d|i} f(\\dfrac{i}{d})g(d) =i=1ndif(d)g(di)=i=1ndif(di)g(d)

这样比较好理解。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


几个简单的应用

1. μ \\mu μ的前缀和

S ( n ) = ∑ i = 1 n ( f ∗ g ) ( i ) − ∑ i = 2 n g ( i ) S ( n i ) \\large S(n)=\\sum\\limits_{i=1}^n(f*g)(i)-\\sum\\limits_{i=2}^ng(i)S(\\dfrac{n}{i}) S(n)=i=1n(fg)(i)i=2ng(i)S(in)

f = μ , g = I , f ∗ g = ϵ f=\\mu, g=I,f*g=\\epsilon f=μ,g=I,fg=ϵ

∑ i = 1 n ϵ ( i ) = 1 \\sum\\limits_{i=1}^n\\epsilon(i)=1 i=1nϵ(i)=1

∑ i = 2 n g ( i ) S ( n i ) \\sum\\limits_{i=2}^ng(i)S(\\dfrac{n}{i}) i=2ng(i)S(in) 这一部分用整除分块+递归解决。

∑ i = l r I ( i ) = r − l + 1 \\sum\\limits_{i=l}^r I(i)=r-l+1 i=lrI(i)=rl+1

采用预处理+记忆化 节省时间。

核心代码:

unordered_map<int,int>smu;
int get_mu(int n){
	if(n<N) return mu[n];//线性筛预处理一部分(5e6)
	if(smu[n]) return smu[n];//记忆化
	ll s=1;//左部分
	for(ll l=2,r;l<=n;l=r+1){ //整除分块.
		r=n/(n/l);
		s-=(r-l+1)*get_mu(n/l);
	}
	return smu[n]=s;
}

2. φ \\varphi φ的前缀和

考虑 φ ∗ I = i d \\varphi * I =id φI=以上是关于狄利克雷卷积总结的主要内容,如果未能解决你的问题,请参考以下文章

数论狄利克雷卷积及其快速计算方法及杜教筛

狄利克雷卷积及莫比乌斯反演

6.15 省选模拟赛 复活石 狄利克雷卷积 快速幂 数论

狄利克雷卷积和莫比乌斯反演

算法狄利克雷卷积 & 莫比乌斯反演

狄利克雷卷积&&杜教筛&&莫比乌斯反演