约数个数函数的一个性质证明,以及其推广

洛谷P3327 [SDOI2015]约数个数和

洛谷P4619 [SDOI2018]旧试题

要用到这个性质,而且网上几乎没有能看的证明,所以特别提出来整理一下。

Original(2020/02)

二维

d(AB)=x|Ay|B[gcd(x,y)=1]

其中 d 是约数个数函数,即 dk(n)=d|n1

(看上去比较不可思议对吧)

右侧的枚举,一部分因子算多了(比如当 gcd(x,y)=1 且额外有 x|B,y|A 时,可以枚举出 xy=yx ),一部分因子又没有算(比如当 gcd(A,B)1 时的 AB )。但是算多和算少之间达成了诡异的平衡。

首先考虑 A,B 互质的情况。显然此时右式中的 [gcd(x,y)=1] 恒成立。而左式可以通过积性函数的性质拆开。两侧都为 d(A)d(B) ,成立。(其实并没有按是否互质讨论的必要,但是这样想能让我们的思路更加清晰)

那么考虑 gcd(A,B)1 时的情况。不妨先证明 A=pa,B=pbp 是素数,这两个 p 是同一个数)时等式成立。

这部分的证明是容易的。根据约数个数的定义,左式显然为 a+b+1。对于右式,设 x=pc,y=pd ,若要使 [gcd(x,y)=1] 成立, c,d 中至少有一个为 0 。那么当 b=0时,c[0,a];当 a=0 时, c[0,b] ;其他情况都不满足条件。排除重复的 c=0,d=0 ,共有 a+b+1 个情况成立,与左式相同,故等式成立。

讨论更加一般的情况。有了前面的证明,我们考虑将 AB 分解质因数后食用,分解后的每一项的形式为 pa+b 。左边根据约数个数基本性质“指数加一连乘积”,即每一个 p 对应的 (a+b+1) 之积。对于右侧,前证说明对于每个 p ,合法的 c,d 的选择有对应的 a+b+1 种,要让 [gcd(x,y)=1] 需要每一个 p 都是合法情况。而每个 p 相对独立,其本质就是许多个“选择”,直接用乘法原理合并起来即可,于是也与左式相同。

用通俗一点的说法,我不管其他的 p 到底需要让 x,y 满足什么样的条件才能使 [gcd(x,y)=1] ,反正在我这个 p 这里只有 a+b+1 个方案有合法的可能性。

总之这样就证毕了。

证明思路很像积性函数的合并,也许对其他一些积性函数命题的证明这种方法也管用。

参考:
https://www.luogu.com.cn/blog/_post/89727
https://www.luogu.com.cn/blog/_post/39908

高维

对于形如

d(ABC)=x|Ay|Bz|C[gcd(x,y)=1][gcd(y,z)=1][gcd(x,z)=1]

的高维拓展,证明思路基本相同,不再赘述。(如果觉得有点迷可以先跳过,Extended里的证明更加接近本质)

Extended (update 2020/03/08)

下面研究 Original 推广到广义约数个数函数的形式。

二维

σk(AB)=x|Ay|B[gcd(x,y)=1](xBy)k=x|Ay|B[gcd(x,By)=1](xy)k

其中 σk 是广义的约数个数函数,即 σk(n)=d|ndk

显然中式和右式是等价的。现证明左式和右式等价。

证明思路与上面基本一致。同样的,我们先解决 A=pa,B=pb 的情况。

首先,直接由定义得出左式:

=i=0a+bpik

同样设 x=pc,y=pd 。分析 [gcd(x,By)=1] 的意义,它的意思是若 x 中不含 pc=0 ),则 y 可以随便选( d[0,b] );若 x 中含 pc[1,a] ),则 y 就必须包含所有的 pd=b ),否则 By 里就含有 p 了;其他情况不满足条件 。

即合法的情况为 (0,[0,b])([1,a],b)

那么,根据右式的形式,可以得出

=i=0bp0pi+i=1apipb=i=0bpi+i=1apb+i

该式实际上只是将左式的枚举从 b 那里切开了。两式是等价的。

那么和上面一样的,对于一般的情况分解质因数,对每一个 p 分别考虑,积性合并即可。全部乘起来的依据也是乘法原理( 就是在枚举所有的方案对应贡献乘积之和)。可能有人问:这里的 B 不是发生变化了吗?其实 B 充当的是一个 y 的全集,不是 pb 了也不影响 x,y 的取值,所以是没有关系的。可以参考一下 Original 里“通俗一点的说法”。

高维

形如

σk(ABC)=x|Ay|Bz|C[gcd(x,By)=1][gcd(y,Cz)=1][gcd(x,Cz=1)](xyz)k

的高维拓展, gcd 部分就是如 xyxzyz 两两配对的形式,这样来限制取值范围。

证明思路基本相同,同样写出合法情况 (0,0,[0,c])(0,[1,b],c)([1,a],b,c) ,对应 pa+b+c+1 ,就容易证明了。

没看到过要用这个的题,已对拍检验正确性。

posted @   sun123zxy  阅读(1626)  评论(2编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示