μ(n)=⎧⎪⎨⎪⎩1n=10n含有平方因子(−1)k其中k为n本质不同的质因子个数
这个答辩似乎看不懂……不如换个形式去描述一下。
μ(1)=1 是初值,没啥好介绍的。
把 n 写为 ∏ki=1pici,如果 maxck>1 那么 μ(n)=0。
否则 μ(n)=(−1)k。
感觉讲得很清楚了 QwQ
由于莫比乌斯也是高贵的积性函数,和 φ(n),f(n)=gcd(k,n),d(n),σ(n) 这类都可以线性筛预处理:
| mu[1]=1; |
| for(int i=2;i<N;i++){ |
| if(!pr[i])pt+=i,mu[i]=-1; |
| for(int j:pt){ |
| if(i*j>=N)break; |
| pr[i*j]=true; |
| if(i%j==0)break(mu[i*j]=0) |
| mu[i*j]=-mu[i]; |
| } |
| } |
看着这个莫比乌斯就很想容斥的样子,那就给个例题?
n∑i=1μ2(i)
虽然可以线性筛直接筛出来去计算,但还是太慢了,需要 O(n) 的复杂度。
发现只需要去计算不为 0 的数量就可以了,其他 ±1 的平方都是 1。
那么就可以转化为 [1,n] 不包含平方因子的数量,也就是算 [1,n] 包含平方因子的数量。包含 22 的数量就是 ⌊n22⌋;包含 32 的数量就是 ⌊n32⌋;包含 42 的数量就是 ⌊n42⌋,但是这个已经在 22 里算过了,没有贡献;包含 52 的数量就是 ⌊n52⌋;包含 62 的数量就是 ⌊n62⌋,可是在 22 和 32 中算过了,反而要减去……;包含 302 的数量就是 ⌊n302⌋ 可是容斥一下反而是要加上的。发现其实这加减的系数就是莫比乌斯函数 μ。
n∑i=1μ(i)⌊ni2⌋=√n∑i=1μ(i)⌊ni2⌋
这样线性筛预处理就能做到 O(√n),据说可以变成 O(3√n)。
∑d∣nμ(d)=ε(n)=[n=1]={1n=10n≠1
证明。把 n 写为 ∏ki=1pici,那就是这些质因子自由组合弄出的倍数也就是 ∏ki=1pic′i,c′i∈[0,ci]。
如果 ∃c′i>1,那么这个数的莫比乌斯函数必然为 0 无需考虑。那么也就是考虑每个 pi 选 0 个还是选 1 个了。选择 1 个的总数就是 C1k,每个的贡献是 −1,选择 2 个的总数就是 C2k,每个的贡献是 1……,选择 k 个的总数就是 Ckk,每个的贡献是 (−1)k。
k∑i=0Cik×(−1)i
这个东西可以使用二项式定理去证明。
0k=(1−1)k=k∑i=0Cik×1k×(−1)k−i=k∑i=0Cik×(−1)i
不过当 n=1 时是例外,此时 ∑d∣1μ(d)=1。
很多时候会和 gcd 纠缠在一起呢。
∑d∣gcd(i,j)μ(d)=[gcd(i,j)=1]
那就来个题:
r1∑i=l1r2∑j=l2[gcd(i,j)=k]
通过二维前缀和的拆分就变成
n′∑i=1m′∑j=1[gcd(i,j)=k]
发现必须 k∣i 并且 k∣i 所以只需要枚举 k 的倍数
⌊n′k⌋∑i=1⌊m′k⌋∑j=1[gcd(i,j)=1]=n∑i=1m∑j=1[gcd(i,j)=1]
根据莫比乌斯函数的性质可以变形
n∑i=1m∑j=1∑d∣gcd(i,j)μ(d)
这个 d 必须满足 d∣gcd(i,j) 也就是 d∣i 并且 d∣j。要求 d≤min(n,m) 所以直接计算对于所有 d∈[1,min(n,m)]
min(n,m)∑d=1μ(d)n∑i=1[d∣i]n∑i=1[d∣j]
运用整除知识知道 ∑ni=1[d∣i] 就是 ⌊nd⌋
min(n,m)∑d=1μ(d)⌊nd⌋⌊md⌋
运用莫比乌斯函数前缀和与整除分块就可以 O(√n) 的复杂度。
那就再来个题:
∑p∈Pn∑i=1m∑j=1[gcd(i,j)=k]=∑p∈P⌊min(n,m)p⌋∑d=1μ(d)⌊npd⌋⌊mpd⌋
如果还是刚刚那个做法就需要 O(n√nlnn),不妨记 k=pd
∑p∈P⌊min(n,m)p⌋∑d=1μ(d)⌊nk⌋⌊mk⌋
对于相同的 k 后半段是始终一样的,那就去提取后半段
min(n,m)∑k=1⌊nk⌋⌊mk⌋∑p∣k,p∈Pμ(kp)
那么枚举每个 p 的倍数就可以算出后面那个东西。同样配合整除分块就可以 O(√n) 解决。
莫比乌斯反演就是如果一个数论函数 f 可以拆成另一个数论函数 g,即
f(n)=∑d∣ng(d)
那么就可以
g(n)=∑d∣nμ(d)f(nd)=∑n∣dμ(dn)f(p)
一般来说第一个用到的多点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话