【莫比乌斯反演】个人思考——关于problem b的三种推法。

这篇博客详细探讨了如何利用容斥原理、莫比乌斯函数性质及莫比乌斯反演三种方法解决求解gcd(i, j)等于特定值d的数对个数的问题。通过推导,作者展示了三种方法得出相同答案的过程,揭示了数论中的美妙一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刷莫反题目,刷着刷着,发现problem b这道题目可以用三种方法推出来,觉得记下来以后可以方便复习,也算巩固一下。

problem b

这类问题是:
∑i=1n∑j=1m[gcd(i,j)=d] \sum_{i = 1} ^ n \sum_{j = 1}^m[gcd(i , j) = d] i=1nj=1m[gcd(i,j)=d]
关于这个问题,我们再熟悉不过,答案是:
∑d′=1min(nd,nd)μ(d′)[nd∗d′]∗[md∗d′] \sum_{d' = 1}^{min(\frac{n}{d} , \frac{n}{d})}\mu(d')[\frac{n}{d*d'}] * [\frac{m}{d*d'}] d=1min(dn,dn)μ(d)[ddn][ddm]

推法一(容斥原理):

考虑经典转换:
∑i=1n∑j=1m[gcd(i,j)=d]=∑i=1n∑j=1m[gcd(i/d,j/d)=1](1) \sum_{i = 1} ^ n \sum_{j = 1}^m[gcd(i , j) = d] = \sum_{i = 1} ^ n \sum_{j = 1}^m[gcd(i / d , j / d) = 1]\tag{1} i=1nj=1m[gcd(i,j)=d]=i=1nj=1m[gcd(i/d,j/d)=1](1)
上式我们还可以套用一个经典变换。
∑i=1n∑j=1m[gcd(i/d,j/d)=1]=∑i=1nd∑j=1md[gcd(i,j)=1](2) \sum_{i = 1} ^ n \sum_{j = 1}^m[gcd(i / d , j / d) = 1]= \sum_{i = 1} ^ {\frac{n}{d}} \sum_{j = 1}^{\frac{m}{d}}[gcd(i , j ) = 1] \tag{2} i=1nj=1m[gcd(i/d,j/d)=1]=i=1dnj=1dm[gcd(i,j)=1](2)

即:考虑111n/dn/dn/d111m/dm / dm/d中,有多少个数对满足互质的个数。
很明显,互质的个数 = 总数 - 不互质的个数.

不互质的个数是几个呢?
我们考虑枚举倍数,2的倍数的个数,3的倍数的个数,4的倍数的个数…考虑符号的时候,发现和莫比乌斯函数的符号是一致的,这个以前的博客证明过,在这不啰嗦。与(n/d)∗(m/d)(n/d) * (m/d)(n/d)(m/d) 合并后得答案:
∑i=1min(n,m)[nd∗i]∗[md∗i]∗μ(i)(3) \sum_{i = 1}^{min(n , m)}[\frac{n}{d*i}] * [\frac{m}{d*i}] * \mu(i)\tag{3} i=1min(n,m)[din][dim]μ(i)(3)

推法二(根据莫比乌斯函数性质):

由莫比乌斯函数性质可得:
∑i=1nd∑j=1md[gcd(i,j)=1]=∑i=1nd∑j=1md∑d′∣gcd(i,j)μ(d′)(4) \sum_{i = 1} ^ {\frac{n}{d}} \sum_{j = 1}^{\frac{m}{d}}[gcd(i , j ) = 1] =\sum_{i = 1} ^ {\frac{n}{d}} \sum_{j = 1}^{\frac{m}{d}}\sum_{d' | gcd(i , j)}\mu(d')\tag{4} i=1dnj=1dm[gcd(i,j)=1]=i=1dnj=1dmdgcd(i,j)μ(d)(4)
d′d'dgcd(i,j)gcd(i , j)gcd(i,j)的因子,我们观察到前面两个求和只是在修饰μ\muμ,给μ\muμ提供一个范围,我们还发现:d′d'd实际上可以取到1∼min(nd,md)1 \sim min(\frac{n}{d},\frac{m}{d})1min(dn,dm),这个很容易想明白:如果i,ji , ji,j一样,那么最大共因子是他的本身,所以1∼min(nd,md)1 \sim min(\frac{n}{d},\frac{m}{d})1min(dn,dm)的范围内,d′d'd都可以取到。
现在我们要思考的是:每个μ(d′)\mu(d')μ(d)被枚举了多少次?我们什么时候能取到这个d′d'd呢,答案是当i,ji , ji,jd′d'd的倍数的时候,gcd(i,j)gcd(i , j)gcd(i,j)d′d'd的倍数。答案呼之欲出:[nd∗d′]∗[md∗d′][\frac{n}{d*d'}] * [\frac{m}{d*d'}][ddn][ddm]
∑d′=1min(nd,nd)μ(d′)[nd∗d′]∗[md∗d′](5) \sum_{d' = 1}^{min(\frac{n}{d} , \frac{n}{d})}\mu(d')[\frac{n}{d*d'}] * [\frac{m}{d*d'}]\tag{5} d=1min(dn,dn)μ(d)[ddn][ddm](5)
根据我们严谨的分析,(4)与(5)(4)与(5)(4)(5)等价。

推法三(莫比乌斯反演):

莫比乌斯反演:

F(n)=∑n∣df(d)(6) F(n) = \sum_{n | d}f(d)\tag{6} F(n)=ndf(d)(6)

f(n)=∑n∣dμ(dn)F(d)(7) f(n) = \sum_{n | d}\mu(\frac{d}{n})F(d)\tag{7} f(n)=ndμ(nd)F(d)(7)
对于本题:
我们设:
F(d)=∑i=1n∑j=1m[d∣gcd(i,j)](8) F(d) = \sum_{i = 1}^{n}\sum_{j = 1} ^ {m}[d | gcd(i , j )]\tag{8} F(d)=i=1nj=1m[dgcd(i,j)](8)
f(d)=∑i=1n∑j=1m[gcd(i,j)=d](9) f(d) = \sum_{i = 1}^{n}\sum_{j = 1} ^ {m}[gcd(i , j ) = d]\tag{9} f(d)=i=1nj=1m[gcd(i,j)=d](9)
很明显(8)(9)(8)(9)(8)(9)满足(6)(6)(6),那么我们可以根据(7)(7)(7)式子直接列出:
f(n)=∑n∣dμ(dn)∑i=1n∑j=1m[d∣gcd(i,j)](10) f(n) = \sum_{n | d}\mu(\frac{d}{n})\sum_{i = 1}^{n}\sum_{j = 1} ^ {m}[d | gcd(i , j )]\tag{10} f(n)=ndμ(nd)i=1nj=1m[dgcd(i,j)](10)
为了不引起歧义,原来的n , m改为a , b
我们发现:d/nd/nd/n是枚举的从1∼n1\sim n1n的自然数,我们将d/nd/nd/n设为d′d'd则:
f(n)=∑d′μ(d′)∑i=1a∑j=1b[d′n∣gcd(i,j)](11) f(n) = \sum_{d'}\mu(d')\sum_{i = 1}^{a}\sum_{j = 1} ^ {b}[d'n | gcd(i , j )]\tag{11} f(n)=dμ(d)i=1aj=1b[dngcd(i,j)](11)
根据推(5)(5)(5)式的方法,我们推出:
f(n)=∑d′=1μ(d′)∑i=1a∑j=1b[d′n∣gcd(i,j)](12) f(n) = \sum_{d' = 1}\mu(d')\sum_{i = 1}^{a}\sum_{j = 1} ^ {b}[d'n | gcd(i , j )]\tag{12} f(n)=d=1μ(d)i=1aj=1b[dngcd(i,j)](12)
f(n)=∑d′=1μ(d′)[ad′∗n][bd′∗n](13) f(n) = \sum_{d' = 1}\mu(d')[\frac{a}{d'*n}][\frac{b}{d'*n}] \tag{13} f(n)=d=1μ(d)[dna][dnb](13)
答案显而易见:
f(d)=∑d′=1μ(d′)[ad′∗d][bd′∗d](14) f(d) = \sum_{d' = 1}\mu(d')[\frac{a}{d'*d}][\frac{b}{d'*d}]\tag{14} f(d)=d=1μ(d)[dda][ddb](14)

通过三种方法:我们发现推出的式子完全一样。殊途同归说的便是这吧。我觉得这也是数论的魅力。代码略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值