文章目录

  • 前言
  • 整除分块
    • 代码
  • 积性函数
  • 线性筛
  • 狄利克雷卷积
  • 莫比乌斯反演
  • trick

所谓莫比乌斯反演,就是莫比乌斯进行的反演

(逃)

前言

在一些需要整除的式子和 gcd⁡,lcm⁡\gcd,\operatorname{lcm}gcd,lcm 等问题中发挥作用。

整除分块

整除分块是莫反的必要前置。

结论:

对于 i≤ni\le ni≤n,满足 ⌊nx⌋=⌊ni⌋\lfloor\dfrac{n}{x}\rfloor=\lfloor\dfrac{n}{i}\rfloor⌊xn​⌋=⌊in​⌋ 的最大的 xxx 为 ⌊n⌊ni⌋⌋\lfloor\dfrac{n}{\lfloor\frac{n}{i}\rfloor}\rfloor⌊⌊in​⌋n​⌋。

证明:
设 k=⌊ni⌋k=\lfloor\dfrac{n}{i}\rfloork=⌊in​⌋,那么就有 n=i⋅k+p(0≤p<i,p=nmodi)n=i\cdot k+p\pod{0\le p<i,p=n\bmod i}n=i⋅k+p(0≤p<i,p=nmodi),设 x=i+dx=i+dx=i+d,同理有 n=(i+d)⋅k+p′(0≤p′<x,p′=nmodx)n=(i+d)\cdot k+p'\pod{0\le p'<x,p'=n\bmod x}n=(i+d)⋅k+p′(0≤p′<x,p′=nmodx),化简得 p′=p−dkp'=p-dkp′=p−dk,由于 p′>0p'>0p′>0,有 d<⌊pk⌋d<\lfloor\dfrac{p}{k}\rfloord<⌊kp​⌋。
那么就有:
xmax=i+dmaxx_{max}=i+d_{max}xmax​=i+dmax​
=i+⌊pk⌋=i+\lfloor\frac{p}{k}\rfloor=i+⌊kp​⌋
=i+⌊nmodik⌋=i+\lfloor\frac{n\bmod i}{k}\rfloor=i+⌊knmodi​⌋
=⌊i+n−⌊ni⌋⋅i⌊ni⌋⌋=\lfloor i+\frac{n-\lfloor \dfrac{n}{i}\rfloor\cdot i}{\lfloor\dfrac{n}{i}\rfloor}\rfloor=⌊i+⌊in​⌋n−⌊in​⌋⋅i​⌋
=⌊n⌊ni⌋⌋=\lfloor \frac{n}{\lfloor\dfrac{n}{i}\rfloor}\rfloor=⌊⌊in​⌋n​⌋
证毕。

代码

(计算因数个数的前缀和)

ll calc(ll x){if(x<=0) return 0ll ans=0;for(ll l=1,r;l<=x;l=r+1){r=x/(x/l);(ans+=1ll*(r-l+1)*(x/l))%=mod;}return ans;
}

积性函数

定义:

如果 f:Z+→Cf:\mathbb{Z^+}\to \mathbb{C}f:Z+→C,则称 f(n)f(n)f(n) 为一个数论函数
如果 f(n)f(n)f(n) 为一个数论函数,且对于 p⊥qp\perp qp⊥q,f(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q),则称 f(n)f(n)f(n) 为一个积性函数
如果 f(n)f(n)f(n) 为一个积性函数,且对于任意 p,qp,qp,q,f(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q),则称 f(n)f(n)f(n) 为一个完全积性函数

一个重要的性质:

对于 p⊥q,d1∣p,d2∣1p\perp q,d_1|p,d_2|1p⊥q,d1​∣p,d2​∣1,则有 (d1d2)∣(pq)(d_1d_2)|(pq)(d1​d2​)∣(pq)

证明:结合基本算数定理,d1,d2d_1,d_2d1​,d2​ 必然没有共同因子,相乘后各个因子的次数还是不超过原来的 p,qp,qp,q 对应位置的次数。

常见的积性函数:

  1. 除数函数:σk(n)=∑d∣ndk\sigma_k(n)=\sum_{d|n}d^kσk​(n)=∑d∣n​dk。

证明:
p⊥q→σk(p)σk(q)=(∑d1∣pd1k)(∑d2∣qd2k)=∑(d1d2)∣(pq)(d1d2)k=σk(pq)p\perp q\to\sigma_k(p)\sigma_k(q)=(\sum_{d_1|p}d_1^k)(\sum_{d_2|q}d_2^k)=\sum_{(d_1d_2)|(pq)}(d_1d_2)^k=\sigma_k(pq)p⊥q→σk​(p)σk​(q)=(∑d1​∣p​d1k​)(∑d2​∣q​d2k​)=∑(d1​d2​)∣(pq)​(d1​d2​)k=σk​(pq)。

  1. 约数个数函数:τ(n)=σ0(n)=∑d∣n1\tau(n)=\sigma_0(n)=\sum_{d|n}1τ(n)=σ0​(n)=∑d∣n​1。

  2. 约数和函数:σ(n)=∑d∣nd\sigma(n)=\sum_{d|n}dσ(n)=∑d∣n​d。

  3. 欧拉函数:φ(n)=∑i=1n[gcd⁡(i,n)=1]\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]φ(n)=∑i=1n​[gcd(i,n)=1]。

证明:
p⊥q→φ(p)φk(q)=(p∏a∈prime,a∣pa−1a)(q∏b∈prime,b∣qb−1b)=pq∏c∈prime,c∣pqc−1c=φ(pq)p\perp q\to\varphi_(p)\varphi_k(q)=(p\prod_{a\in prime,a|p}\dfrac{a-1}{a})(q\prod_{b\in prime,b|q}\dfrac{b-1}{b})=pq\prod_{c\in prime,c|pq}\dfrac{c-1}{c}=\varphi(pq)p⊥q→φ(​p)φk​(q)=(p∏a∈prime,a∣p​aa−1​)(q∏b∈prime,b∣q​bb−1​)=pq∏c∈prime,c∣pq​cc−1​=φ(pq)

性质:φ(n)=∑i=1n[gcd⁡(i,n)=1]∗i=φ(n)+[n==1]2\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]*i=\dfrac{\varphi(n)+[n==1]}{2}φ(n)=∑i=1n​[gcd(i,n)=1]∗i=2φ(n)+[n==1]​。
证明:对于 gcd⁡(d,n)=1\gcd(d,n)=1gcd(d,n)=1,同样有 gcd⁡(n−d,n)=1\gcd(n-d,n)=1gcd(n−d,n)=1,所有和 nnn 互质的数都是对称分布的。

  1. 莫比乌斯函数:μ(n)\mu(n)μ(n),μ(1)=1\mu(1)=1μ(1)=1,对于无平方因子的数 n=∏ikpin=\prod_i^k p_in=∏ik​pi​,μ(n)=(−1)k\mu(n)=(-1)^kμ(n)=(−1)k;对于有平方因子的数 nnn,μ(n)=0\mu(n)=0μ(n)=0。
  2. 元函数:e(n)=[n=1]e(n)=[n=1]e(n)=[n=1]。完全积性。
  3. 恒等函数:I(n)=1I(n)=1I(n)=1。完全积性。也可写作 1(n)=11(n)=11(n)=1。
  4. 单位函数:id(n)=nid(n)=nid(n)=n。完全积性。
  5. 恒等函数:idk(n)=nkid^k(n)=n^kidk(n)=nk。完全积性。

线性筛

利用线性筛筛出 μ\muμ 这样的积性函数。

int mu[N];
int p[N],tot,vis[N];
void init(int n){mu[1]=1;for(int i=2;i<=n;i++){if(!vis[i]) vis[i]=1,mu[i]=-1,p[++tot]=i;for(int j=1;j<=tot&&p[j]<=n/i;j++){vis[i*p[j]]=1;if(i%p[j]==0){mu[i*p[j]]=0;break;}mu[i*p[j]]=-mu[i];}}
}

狄利克雷卷积

定义:

对于数论函数 f,gf,gf,g,h(n)=f∗g=∑d∣nf(d)g(nd)h(n)=f*g=\sum_{d|n}f(d)g(\dfrac{n}{d})h(n)=f∗g=∑d∣n​f(d)g(dn​) 叫做 f,gf,gf,g 的狄利克雷卷积
狄利克雷卷积可以理解为乘法意义上的卷积,满足交换律、分配律,结合律。

若 f,gf,gf,g 均为积性函数,那么 h=f∗gh=f*gh=f∗g 也是积性函数。

证明:p⊥q→h(p)h(q)=(∑d1∣pf(d1)g(pd1))(∑d2∣qf(d2)g(qd2))=∑(d1d2)∣(pq)f(d1)f(d2)g(pd1)g(qd2)=∑(d1d2)∣(pq)f(d1d2)g(pqd1d2)=h(pq)p\perp q\to h(p)h(q)=(\sum_{d_1|p}f(d_1)g(\frac{p}{d_1}))(\sum_{d_2|q}f(d_2)g(\frac{q}{d_2}))=\sum_{(d_1d_2)|(pq)}f(d_1)f(d_2)g(\dfrac{p}{d_1})g(\dfrac{q}{d_2})=\sum_{(d_1d_2)|(pq)}f(d_1d_2)g(\dfrac{pq}{d_1d_2})=h(pq)p⊥q→h(p)h(q)=(∑d1​∣p​f(d1​)g(d1​p​))(∑d2​∣q​f(d2​)g(d2​q​))=∑(d1​d2​)∣(pq)​f(d1​)f(d2​)g(d1​p​)g(d2​q​)=∑(d1​d2​)∣(pq)​f(d1​d2​)g(d1​d2​pq​)=h(pq)

1∗1=τ1*1=\tau1∗1=τ
1∗id=σ1*id=\sigma1∗id=σ

证明:直接展开即可得。

∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n==1]∑d∣n​μ(d)=[n==1],即 μ∗1=e\mu*1=eμ∗1=e,两者互为逆元。

证明:μ(1)=0\mu(1)=0μ(1)=0 显然成立,对于 n>1n>1n>1,由于含平方因子的 μ\muμ 均为0,只需要考虑 nnn 所有不含平方因子的因数。
设 nnn 有 mmm 个质因子,从这些质因子中任意选择(每项最多一个)构成因数,就有:∑d∣nμ(d)=∑i=0m(mi)(−1)i=(1−1)m=0\sum_{d|n}\mu(d)=\sum_{i=0}^m\binom{m}{i}(-1)^i=(1-1)^m=0∑d∣n​μ(d)=∑i=0m​(im​)(−1)i=(1−1)m=0。

[gcd⁡(i,j)=1]=∑d∣gcd⁡(i,j)μ(d)[\gcd(i,j)=1]=\sum_{d|\gcd(i,j)}\mu(d)[gcd(i,j)=1]=∑d∣gcd(i,j)​μ(d)

证明:直接令上一个式子 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n==1]∑d∣n​μ(d)=[n==1] 的 n=gcd⁡(i,j)n=\gcd(i,j)n=gcd(i,j) 即可得。

φ=μ∗id\varphi=\mu*idφ=μ∗id

证明:(μ∗id)(n)=∑d∣nμ(d)nd(\mu*id)(n)=\sum_{d|n}\mu(d)\dfrac{n}{d}(μ∗id)(n)=∑d∣n​μ(d)dn​,右边的式子就可以理解成容斥筛掉所有和 nnn 不互质的数。

id=φ∗1,n=id(n)=∑d∣nφ(n)id=\varphi*1,n=id(n)=\sum_{d|n}\varphi(n)id=φ∗1,n=id(n)=∑d∣n​φ(n)

证明:id=id∗e=id∗μ∗1=φ∗1id=id*e=id*\mu*1=\varphi*1id=id∗e=id∗μ∗1=φ∗1

莫比乌斯反演

若 g(n)=∑d∣nf(d)g(n)=\sum_{d|n}f(d)g(n)=∑d∣n​f(d),那么 f(n)=∑d∣nμ(d)g(nd)f(n)=\sum_{d|n}\mu(d)g(\frac{n}{d})f(n)=∑d∣n​μ(d)g(dn​)。

证明:

  1. f=f∗1∗μ=g∗μf=f*1*\mu=g*\muf=f∗1∗μ=g∗μ。
  2. ∑d∣nμ(d)g(nd)=∑d∣nμ(d)∑k∣ndf(k)=∑kd∣nμ(d)f(k)=∑k∣nf(k)∑d∣nkμ(d)\sum_{d|n}\mu(d)g(\dfrac{n}{d})=\sum_{d|n}\mu(d)\sum_{k|\frac{n}{d}}f(k)=\sum_{kd|n}\mu(d)f(k)=\sum_{k|n}f(k)\sum_{d|\frac{n}{k}}\mu(d)∑d∣n​μ(d)g(dn​)=∑d∣n​μ(d)∑k∣dn​​f(k)=∑kd∣n​μ(d)f(k)=∑k∣n​f(k)∑d∣kn​​μ(d)
    =∑k∣nf(k)[nk=1]=f(n)=\sum_{k|n}f(k)[\dfrac{n}{k}=1]=f(n)=∑k∣n​f(k)[kn​=1]=f(n)

若 g(n)=∑n∣df(d)g(n)=\sum_{n|d}f(d)g(n)=∑n∣d​f(d),那么 f(n)=∑n∣dμ(dn)g(d)f(n)=\sum_{n|d}\mu(\dfrac{d}{n})g(d)f(n)=∑n∣d​μ(nd​)g(d)。

证明:∑n∣dμ(dn)g(d)=∑k=1∞μ(k)g(kn)=∑k=1∞μ(k)∑d∣knf(d)=∑n∣df(d)∑k∣dnμ(k)\sum_{n|d}\mu(\dfrac{d}{n})g(d)=\sum_{k=1}^{\infty}\mu(k)g(kn)=\sum_{k=1}^{\infty}\mu(k)\sum_{d|kn}f(d)=\sum_{n|d}f(d)\sum_{k|\frac{d}{n}}\mu(k)∑n∣d​μ(nd​)g(d)=∑k=1∞​μ(k)g(kn)=∑k=1∞​μ(k)∑d∣kn​f(d)=∑n∣d​f(d)∑k∣nd​​μ(k)
=∑n∣df(d)[dn=1]=f(n)=\sum_{n|d}f(d)[\dfrac{d}{n}=1]=f(n)=∑n∣d​f(d)[nd​=1]=f(n)

trick

  1. 枚举倍数的一种灵活的变形:g(d)=∑d∣inf(i)=∑i=1⌊nd⌋f(i⋅d)g(d)=\sum_{d|i}^nf(i)=\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i\cdot d)g(d)=∑d∣in​f(i)=∑i=1⌊dn​⌋​f(i⋅d)。
    很显然,但有时能发挥大作用。
  2. [gcd⁡(i,j)=1]=∑d∣gcd⁡(i,j)μ(d)[\gcd(i,j)=1]=\sum_{d|\gcd(i,j)}\mu(d)[gcd(i,j)=1]=∑d∣gcd(i,j)​μ(d)。再写一遍是因为它太重要了。
  3. 关于因数个数函数:τ(i⋅j)=∑x∣i,y∣j[gcd⁡(x,y)=1]\tau(i\cdot j)=\sum_{x|i,y|j}[\gcd(x,y)=1]τ(i⋅j)=∑x∣i,y∣j​[gcd(x,y)=1]。

模板:莫比乌斯反演(数论)相关推荐

  1. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块) 手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csd ...

  2. 小A的数学题(莫比乌斯反演数论)

    小A的数学题(莫比乌斯反演&数论) 1.容斥 原始化简为 ∑ d = 1 n d 2 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = d ] \sum\limi ...

  3. 模板 - 莫比乌斯反演(常用技巧)

    整理的算法模板合集: ACM模板 目录 莫比乌斯反演 常用技巧 经典模板例题 莫比乌斯反演 莫比乌斯函数: μ(n)={0∃i∈[1,m],Ci>1(−1)m∀i∈[1,m],Ci=1\mu(n ...

  4. P2522 HAOI2011 Problem b [莫比乌斯反演,数论分块]

    P2522 HAOI2011 题意 对于给出的n个询问,每次求有多少个数对(x,y)(x,y)(x,y),满足a≤x≤ba≤x≤ba≤x≤b,c≤y≤dc≤y≤dc≤y≤d,且gcd(x,y)=kgc ...

  5. HDU 6833 莫比乌斯反演 + 数论分块

    给定下列式子: ∑a1=1n∑a2=1n...∑ax=1n(∏j=1xajk)f(gcd⁡(a1,a2...,ax))⋅gcd⁡(a1,a2...,ax)\sum_{a_1=1}^n\sum_{a_2 ...

  6. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  7. 【算法笔记】莫比乌斯反演(包含定理,两种形式的证明及入门经典模板)

    整理的算法模板合集: ACM模板 目录 一.莫比乌斯反演 二.几个概念和定理 三.两种形式的莫比乌斯反演证明 四.POJ 3904 Sky Code(入门例题) 一.莫比乌斯反演 学习笔记,我是看这个 ...

  8. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

  9. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

最新文章

  1. 一阶逻辑与二阶逻辑的区别一元谓词多元谓词
  2. 美国字节程序员吐槽:国内同事太卷了!工资买不起房,卷的意义是什么?
  3. Android图片三级缓存策略
  4. bean的scope
  5. php 分页 url重写 分页问题,解决千古难题,wordpress分页URL问题,wordpress给分页加链接...
  6. python3生成文件对象(五分钟读懂)
  7. 2021-2025年中国电动门锁行业市场供需与战略研究报告
  8. java 二级联动实现
  9. 6. 测度论-期望及其性质
  10. MATLAB怎么求非线性度误差,用Matlab进行最小二乘法线性拟合(求传感器非线性误差、灵敏度)...
  11. 七夕表白代码(动画爱心)
  12. 猜图达人小游戏V4.1微擎小程序源码
  13. 关于微信第三方平台$APPID$.wx.abc.com的问题
  14. linux nc命令 测试网络连通性
  15. 全球与中国Autodesk渠道合作伙伴市场现状及未来发展趋势
  16. 大学生c语言程序设计具体干什么,大学生c语言程序设计实习报告.doc
  17. tiktok小店怎么开通?tiktok小店怎么卖货?
  18. 华为5g鸿蒙麒麟,2019华为十大黑科技盘点麒麟9905G鸿蒙OS受重视
  19. java基础案例-模拟双色球
  20. web前端中制作简单页面实现让文字在图片旁边

热门文章

  1. Spark ML - 聚类算法
  2. java和python哪个学习编程_初学编程,选Java还是Python?
  3. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
  4. php 获取对象所有成员变量,PHP成员变量获取对比
  5. android fragmentstatepageradapter框架,安卓爬坑指南之FragmentStatePagerAdapter
  6. 算法题目中经典问题(易错点)
  7. mysql 变量 数据类型_浅谈mysql(二)数据类型
  8. [EDA]FPGA/CPLD 设计流程步骤及步骤概念
  9. 高等数学下-赵立军-北京大学出版社-题解-练习8.4
  10. 数据结构与算法--图论最短路径算法应用-词阶求解