这篇文章参考了许多资料和自己的理解。

先放理论基础。

最大公约数:小学学过,这里只提一些重要的公式:

$·$若$a=b$,则$\gcd(a,b)=a=b$;

$·$若$\gcd(a,b)=d$,则$\gcd(b,a-b)=d$,所以就有了欧几里得辗转相除法;

$·$如果$a$为偶数,$b$为奇数,则$\gcd(a,b)=\gcd\left(\dfrac a2,b\right)$;

$·$如果$a$、$b$均为偶数,则$\gcd(a,b)=2\times \gcd\left(\dfrac a2,\dfrac b2\right)$。

$·$若$\gcd(a,b)=d$,则$\gcd\left(\dfrac ad,\dfrac bd\right)=1$;

数论函数:定义域为正整数、值域是复数的子集的函数称为数论函数。$\text{OI}$中一般都是整数。

积性函数:设$f$为数论函数,对于任意互质的两个正整数$a$、$b$,且$f(a)f(b)=f(ab)$,则$f$是积性函数。如果对于任意两个正整数$a$、$b$满足$f(a)f(b)=f(ab)$,则称之为完全积性函数。区别两者。

因式分解:这个小学就学过了。用现在的知识说,$n=p_1^{\alpha_1}p_2^{\alpha_2}···p_s^{\alpha_s}$是$n$的标准分解,$p_1,p_2,···,p_s$均为质数。

根据以上三条,可以得到:对于积性函数$f$,有$f(n)=f(p_1^{\alpha_1})f(p_2^{\alpha_2})···f(p_s^{\alpha_s})$,所以研究积性函数可以研究其在素数的幂上的取值。

所以我们可以用$\text{Euler}$筛法线性时间内求解出所需的$f$的值。

单位函数$\epsilon(n)=[n=1]=\left\{\begin{aligned}1,n=1\\0,n\ne1\end{aligned}\right.$。其中$[\text{state}]$表示当$\text{state}$为真时值为$1$,否则为$0$。单位函数是完全积性函数

除数函数:$\sigma_k(n)$表示$n$的因子的$k$次方之和:$\sigma_k(n)=\sum\limits_{d|n}d^k$。当$k=0$时变成求其约数个数,此时写作$d(n)$;当$k=1$时变成求约数和,此时写作$\sigma(n)$。除数函数是积性函数

$\text{Euler}$函数:表示不超过$n$且与$n$互质的正整数的个数,根据容斥原理可得:$\varphi(n)=n·\prod\limits_{i=1}^s\left(1-\dfrac{1}{p_i}\right)$。其中$n=p_1^{\alpha_1}p_2^{\alpha_2}···p_s^{\alpha_s}$是$n$的标准分解。

然后对于$\text{Euler}$函数,有一个性质:$n=\sum\limits_{d|n}\varphi(d)$。

证明:考虑根据与$n$的最大公约数分组,设$\gcd(n,i)=d$,则根据前面所讲的性质得到$\gcd\left(\dfrac nd,\dfrac id\right)=1$,所以与$n$的最大公约数为$d$的数有$\varphi\left(\dfrac nd\right)$,又因为所有$\leq n$的数与$n$的最大公约数$d$一定整除$n$,所以可得:$n=\sum\limits_{d|n}\varphi\left(\dfrac nd\right)=\sum\limits_{d|n}\varphi(d)$。(因为$d$和$\dfrac nd$成对出现,所以可以替换)

要到重点啦~

$\text{Dirichlet}$卷积:设$f$、$g$是数论函数,对于数论函数$h$如果满足$h(n)=\sum\limits_{d|n}f(d)g\left(\dfrac nd\right)$,则称$h$为$f$和$g$的$\text{Dirichlet}$卷积,简写成$h=f*g$。对于任意的数论函数$f$,有$f*\epsilon=f$。$\text{Dirichlet}$卷积满足交换律结合律。$h=f*g$为积性函数当且仅当$f,g$为积性函数。

幂函数:表示$n^k$,写作$\text{Id}_k(n)$,当$k=1$时$k$可不写。一般当作记号。

根据这些我们可以将上面的式子改成$\text{Dirichlet}$卷积的形式,例如除数函数的性质可写成$\sigma_k(n)=\text{Id}_k*1$,$\text{Euler}$函数的性质可写成$\text{Id}=\varphi*1$。

到啦~

$\text{Mobius}$函数:定义$\mu(n)=\left\{\begin{array}{ll}1 & n=1\\(-1)^s & n=p_1p_2···p_s\text{且}p_1,p_2,···,p_s\text{互不相等}\ &\\0 & \text{其他(也就是含有因数为质数的平方)}\end{array}\right.$。$\mu$是积性函数

$\text{Mobius}$函数重要的性质:$\sum\limits_{d|n}\mu(d)=\epsilon(n)$。用$\text{Dirichlet}$卷积表示就是$\mu*1=\epsilon$。

证明:$n=1$时成立是显然的。若$n>1$,设素因子有$s$个,如果$d$出现了$2$次相同的素因子,根据定义$\mu(d)=0$,所以只考虑$d$中素因子的指数为$0$或$1$时。即$d$为$s$个素因子中任意选取$0\text{~}s$个素因子的乘积,所以得:$\sum\limits_{d|n}\mu(d)=\sum\limits_{i=0}^s(-1)^i\left(\begin{matrix}s\\i\end{matrix}\right)=(1-1)^s=0$。结果和$\epsilon$定义一样,即证。

$\text{Mobius}$变换:设$f$为数论函数,若函数$g$满足$g(n)=\sum\limits_{d|n}f(d)$,则称$g$为$f$的$\text{Mobius}$变换,$f$为$g$的$\text{Mobius}$逆变换。也可以写作$g=f*1$。

$\text{Mobius}$反演定理:上面的$\text{Mobius}$变换的充要条件为$f(n)=\sum\limits_{d|n}g(d)\mu\left(\dfrac nd\right)$。可以写作$f=g*\mu$。对此的推导很简单,由$f=g*\mu$得$f*1=g*\mu*1$,根据$\mu*1=\epsilon$得$f*1=g*(\mu*1)=g*\epsilon$,又因为$f*\epsilon=f$,所以$g*\epsilon=g=f*1$,就得到了上面的$\text{Mobius}$变换。

到这,该有的定义还有就说完了。

一般的求解就是利用卷积转化原式,再通过调换求和顺序或者通过整除分块的科技降低复杂度。常用的卷积就是上面所述(还算比较套路的8虽然我还是很弱)。

这里放几个经典的例子(正在施工,待更)

[SDOI2012]Longge的问题:跟Mobius反演没有直接关系,但值得一看。

[HAOI2011]Problem b:跟Mobius有关系啦!之中有整除分块的相关内容,很重要。

转载于:https://www.cnblogs.com/ac-evil/p/10370642.html

Mobius反演学习相关推荐

  1. SPOJ PGCD (mobius反演 + 分块)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意 :求满足gcd(i , j)是素数(1 &l ...

  2. 关于Mobius反演

    欧拉函数 \(\varphi\) \(\varphi(n)=\)表示不超过 \(n\) 且与 \(n\) 互质的正整数的个数 \[\varphi(n)=n\cdot \prod_{i=1}^{s}(1 ...

  3. Mobius反演和筛法

    Mobius反演和筛法 前置知识:积性函数.Dirichlet卷积.莫比乌斯函数.数论分块 积性函数 定义: 1.若f(n)的定义域为正整数域,值域为复数,即f: Z^+ →C,则f(n)为数论函数: ...

  4. P1447 [NOI2010]能量采集(mobius反演)

    P1447 [NOI2010]能量采集 式子化简 显然题目就是要我们求∑i=1n∑j=1m2gcd(i,j)−1\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} 2gcd(i, ...

  5. Mobius反演总结

    刷了一些浅显的反演题目, 做一个总结 知识点1 给定n个数(可以是1-n), 求有多少数与x互质 f(x)=∑d|xu[d]∗cnt[d] f(x) = \sum_{d|x}u[d]*cnt[d] 其 ...

  6. Mobius反演方法

    <更新提示> 前置知识:建议有一点DirichletDirichletDirichlet卷积的基础,会线性筛求积性函数.本文可能会持续更新. 可以看我以前在博客园的博客. <正文&g ...

  7. Bzoj-2820 YY的GCD Mobius反演,分块

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2820 题意:多次询问,求1<=x<=N, 1<=y<=M且gcd( ...

  8. P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 推导过程 ∑i=1n∑j=1mlcm(i,j)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} lcm(i, j ...

  9. P3327 [SDOI2015]约数个数和 (mobius反演)

    P3327 [SDOI2015]约数个数和 推导过程 求∑i=1n∑j=1md(ij)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} d(ij)∑i=1n​∑j=1m​d(ij ...

最新文章

  1. php imagefill,PHP 图像填充 imagefill、imagefilledarc 与 imagefilledrectangle() 函数
  2. php处理heic格式图片,iPhone 照片为heic格式怎么处理?
  3. java netty socket_Java-彻底弄懂netty-原来netty是这样启动的-知识铺
  4. Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
  5. iPhone11翻车了?发烫严重、信号依旧差...
  6. Python中带else子句的for循环执行过程
  7. Android常用Adapter用例
  8. Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
  9. [水晶报表]水晶报表创建以及调用方法
  10. 海信电视 android,海信聚好看app下载 海信聚好看(电视微助手) for Android V5.7.0.9 安卓手机版 下载-脚本之家...
  11. linux vga 驱动,Linux VGA驱动移植实验【转】
  12. chloe.mysql 源码_AceFx-基于Nfine的Chloe官网及后台源码
  13. python 拆分excel单元格_如何用Python拆分合并后的Excel单元格?
  14. 【Python办公自动化】使用reportlab制作pdf报告
  15. 有哪些简单好用的国产数据库?
  16. python中使用什么表示代码块、不需要使用大括号_Python3 基础语法
  17. Binary Knapsack (BKP) Problem 是什么
  18. 离谱的布斯法(补码一位乘)
  19. 【递归】Coffee Chicken
  20. 风速风向 UV 相互转换

热门文章

  1. SVG进阶-SMIL动画
  2. veket linux应用软件,veket linux下载
  3. web服务器部署证书
  4. windows在此计算机上找不到系统映象,Win7下打开程序提示应用程序或dll 为无效的windows映像怎么办...
  5. 实验楼Linux基础挑战2答案,实验楼-Linux基础-实验二 Linux的基本概念及操作
  6. 【项目】磁盘文件管理工具
  7. 微信小程序中使用JSAPI支付
  8. MMA-mathematica绘图
  9. .net的web开发前后端传值系列(二)
  10. iP地址计算子网掩码(附示例)