积性函数#
积性函数:对于任意互质的整数 a,b 有 f(ab)=f(a)f(b) 则称 f(x) 的数论函数。
完全积性函数:对于任意整数 a,b 有 f(ab)=f(a)f(b) 的数论函数。
-
常见的积性函数:φ,μ,σ,d
-
常见的完全积性函数:ϵ,I,id
ϵ(n)=[n=1],I(n)=1,id(n)=n
狄利克雷卷积#
设 f,g 是两个数论函数,它们的狄利克雷卷积卷积是:(f∗g)(n)=∑d|nf(d)g(nd)
性质:满足交换律,结合律
单位元:ϵ (即 f∗ϵ=f)
结合狄利克雷卷积得到的几个性质:
- μ∗I=ϵ
- φ∗I=id
- μ∗id=φ
莫比乌斯函数#
定义
μ(n)=⎧⎪⎨⎪⎩1 (n=1)(−1)m (m为质数个数)0 (含有平方因子)
性质
-
⌊nxy⌋=⌊⌊nx⌋y⌋
-
∑d|nμ(d)=[n=1]
-
∑d∣nμ(d)d=φ(n)n
-
σk(nm)=∑x∣n∑y∣n[gcd(x,y)=1](nx⋅y)k
∑ni=1∑mj=1σk(ij) 的推式子过程
f(i),g(i) 是两个数论函数:
f(i)=∑d∣ig(d)⇒g(i)=∑d∣iμ(id)f(d)=∑d∣iμ(d)f(id)
或者
f(i)=⌊ni⌋∑d=1g(d⋅i)⇒g(i)=⌊ni⌋∑d=1f(d⋅i)μ(d)
求 gcd(i,j)=k 的个数
n∑i=1m∑j=1[gcd(i,j)=k]
设 f(k) 为 gcd(i,j)=k 的个数,g(k) 为 gcd(i,j) 是 k 的倍数的个数,则:
g(k)=⌊nk⌋∑d=1f(d⋅x)
而 g(k)=⌊nk⌋⋅⌊mk⌋,故直接莫反+数论分块求 f(k) 即可。
求 gcd(i,j) 的 k 次幂
n∑i=1m∑j=1gcd(i,j)kmod109+7
用之前的做法将得到:
n∑d=1dk⌊nd⌋∑x=1μ(x)⌊ndx⌋⌊mdx⌋
这样可以做到 O(n34),但是还有更快的做法,枚举 dx,记为 T:
n∑T=1⌊nT⌋⌊mT⌋∑d∣Tdk⋅μ(Td)
设 f(n)=∑d∣ndkμ(nd),则只要求出 f 的前缀和,就可以 O(√n) 解决单次询问。
Sengxian 说
这个交换枚举顺序,然后变成积性函数预处理+数论分块的技巧很常见。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】