各种数论问题汇集
By SemiWaker
常见数论函数:
- 约数函数
σk=∑d|ndk - 元函数
e=[n=1] - 恒等函数
I=1 - 单位函数
ID=n - 幂函数
IDk=nk
ID0=I
狄利克雷卷积及其他:
- 卷积:
(a×b)(n)=∑d|na(d)b(nd) - 乘:
(a⋅b)(n)=a(n)b(n) - 加:
(a+b)(n)=a(n)+b(n) - 交换律
a×b=b×a - 结合律
(a×b)×c=a×(b×c) - 分配率
(a+b)×c=a×c+b×c - 单位元
a×e=a
注意
a⋅e=e - 单位元的逆元:莫比乌斯函数
μ×I=e - 莫比乌斯反演
f=g×I⇔g=f×μ - 欧拉函数的卷积
ϕ×I=ID⇔ϕ=ID×μ - 恒等函数的卷积
I×I=σ0⇔I=σ0×μ - 幂函数的卷积
IDk×I=σk⇔IDk=σk×μ
若
b(x)b(nx)=c(n)
则
(a⋅bk)×bk=∑d|na(d)b(d)b(nd)=(a×I)⋅ck(n)
另外一种表述:
g完全积性的条件下:
(f⋅g)×g=(f×I)⋅g
例子:
由
IDk(d)Ik(nd)=IDk(n)
可以推出:
(a⋅IDk)×IDk=(a×I)⋅IDk
(ϕ⋅IDk)×IDk=ID⋅IDk=IDk+1
(μ⋅IDk)×IDk=e⋅IDk=e
IDk×IDk=(I⋅IDk)×IDk=(I×I)⋅IDk=σ0⋅IDk
杜教筛(函数求和):
*设
S(n)=∑i=1na(i)
且已知:
a×b=c
那么我们可以推出:
∑i=1nc(i)=∑i=1n∑d|ia(d)b(id)
- 连续自然数约数的分解:
考虑把上式右边对a求和枚举的下标变成连续的:
把1~n的约数列出来:
1| 1
2| 1 2
3| 1 3
4| 1 2 4
5| 1 5
6| 1 2 3 6
7| 1 7
8| 1 2 4 8
……
然后枚举一个数d,在它的每一个倍数di中取走一个约数i。
例如:从1的倍数1中取走1,2中取走2,3中取走3……
然后从2的倍数2中取走1,4中取走2,6中取走3……
从3的倍数3中取走1,6中取走2,9中取走3……
依次类推。
这样枚举d=1~n,就可以把1~n的所有约数分解成一系列的1~ ⌊nd⌋
然后我们得到公式:
∑i=1nc(i)=∑d=1n∑i=1⌊nd⌋a(i)b(d)=∑d=1nb(d)∑i=1⌊