前导

要学习莫比乌斯函数 需要学习 到 积性函数,深度理解欧拉筛。

先说说什么是积性函数吧。

积性函数

其实积性函数非常好理解,

定义

积性函数:若gcd(a,b)=1,且满足f(ab)=f(a)f(b),则称f(x)为积性函数

完全积性函数:对于任意正整数a,b,都满足f(ab)=f(a)f(b),则称f(x)为完全积性函数

性质

1.若f(n),g(n)均为积性函数,则函数h(n)=f(n)g(n)也是积性函数

2.若f(n)为积性函数,则函数c*f(n)(c是常数)也是积性函数,反之一样

3.任何积性函数都能应用线性筛,在O(n)时间内求出1~n项(莫比乌斯就要用到),像素数,欧拉函数等都是 积性函数。

知道这些之后,我们就来看莫比乌斯函数。

莫比乌斯函数

定义:

莫比乌斯函数主要是个分段函数。

性质:

1.对于任意正整数n,∑ d ∣ n n μ ( d ) = [ n = 1 ] \sum_{d|n}^{n}{μ(d)=[n=1]}∑d∣nn​μ(d)=[n=1] 。([n==1]表示只有当n=1成立时,返回值为1;否则,值为0;(这个就是用μ是容斥系数的性质可以证明)(PS:这一条性质是莫比乌斯反演中最常用的)

2.对于任意正整数n,∑ d ∣ n n μ ( d ) d = ϕ ( n ) n \sum_{d|n}^{n}{\frac{μ(d)}{d}=\frac{ϕ(n)}{n}}∑d∣nn​dμ(d)​=nϕ(n)​ (这个性质很奇妙,它把欧拉函数和莫比乌斯函数结合起来)

强烈建议 : 深度理解完这两条性质之后,在去看莫比乌斯反演,要不莫比乌斯反演不容易懂。

至于如何求莫比乌斯函数:我们知道莫比乌斯函数跟欧拉函数一样都是积性函数,所以我们可以同 欧拉筛一样吧莫比乌斯函数筛出来。

void get_mu(ll n){

mu[1]=1;// 存放 莫比乌斯函数;

//isprime[] 存放 是否是质数

//prime[] 存放 质数

for(int i=2;i<=n;i++){

if(!isprime[i]) {

prime[++cnt]=i;

mu[i]=-1;

}

for(int j=1;j<=cnt&&i*prime[j]<=n;j++){

isprime[i*prime[j]]=1;

if(i%prime[j]==0){mu[i*prime[j]]=0;break;}//也可以直接break 因为里面本来存的就是0

else mu[i*prime[j]]=-mu[i];

}

}

}

莫比乌斯反演

我只是掌握皮毛,有深层次的理解在更新,有更好的理解也可以分享给我哦~~~。 不胜感激!

莫比乌斯反演的引入:

若 F ( n ) = ∑ d ∣ n n f ( d ) F(n)=\sum_{d|n}^{n}{f(d)}F(n)=∑d∣nn​f(d).

那么

从中,可以看出,若 n=p2(p是质数)那么F ( p ) = f ( 1 ) + f ( p ) , F ( n ) = f ( 1 ) + f ( p ) + f ( p 2 ) F\left( p \right)=f\left( 1 \right)+f\left( p \right),F\left( n \right)=f\left( 1 \right)+f\left( p \right)+f\left( p^2 \right)F(p)=f(1)+f(p),F(n)=f(1)+f(p)+f(p2),所以 f ( n ) = F ( p 2 ) − F ( p ) f\left( n \right)=F\left( p^2 \right)-F\left( p \right)f(n)=F(p2)−F(p)

通过推广我们可以得到就像n=8,(!=p2) 他也满足这个式子

f ( n ) = ∑ d ∣ n n u ( d ) F ( n d ) f\left( n \right)=\sum_{d|n}^{n}{u\left( d \right)}{F\left( \frac{n}{d} \right)}f(n)=∑d∣nn​u(d)F(dn​)

根据上个推广的来的式子我们 就可以说 莫比乌斯反演定理了。

莫比乌斯反演定理

设 f ( n ) f\left ( n \right)f(n) 和g ( n ) g\left( n \right)g(n)是定义在正整数集合上的两个函数定义如下:

若函数f ( n ) f\left( n \right)f(n)函数:

f ( n ) = ∑ d ∣ n n g ( d ) = ∑ d ∣ n g ( n d ) f\left( n \right)=\sum_{d|n}^{n}{g\left( d \right)}=\sum_{d|n}^{}{g\left( \frac{n}{d} \right)}f(n)=∑d∣nn​g(d)=∑d∣n​g(dn​)

则有:

莫比乌斯反演定理证明

参考着个吧

理解就行。重要是定理。(个人认为)

莫比乌斯反演另一性质(与欧拉函数有关)

若n>1且n为正整数,则有∑ d ∣ n u ( d ) = 0 \sum_{d|n}^{}{u\left( d \right)}=0∑d∣n​u(d)=0

若n=1,则该式为1、

2,

对任意正整数n均有:

∑ d ∣ n u ( d ) d = ϕ ( n ) n \sum_{d|n}^{}{\frac{u\left( d \right)}{d}}=\frac{\phi \left( n \right)}{n}∑d∣n​du(d)​=nϕ(n)​

python莫比乌斯_莫比乌斯函数 - osc_7eqzxl4g的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. python 计算面积 比计算几何慢_计算几何相关 - osc_kbyywydz的个人空间 - OSCHINA - 中文开源技术交流社区...

    计算几何相关 ##向量表示法 这里最适合的就是用一个二维点对$(a,b)$来表示了. ##点积 ${a.xb.x+a.yb.y}$ 在向量的含义下:$\vec{a}·\vec{b}=|\vec{a}| ...

  2. python sqlite3加密_sqlite3加密 - kjpioo的个人空间 - OSCHINA - 中文开源技术交流社区...

    SQLite 3 开源版不带加密功能,对于一个保存在本地的数据库来说没有加密功能让人难以接受,只要用记事本打开数据库就可以看到数据库内保存的数据,对安全多多少少有一点影响.有一个办法是把内容加密后保存 ...

  3. java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java代码的回调函数经常由框架或是系统定义,由程序开发人员填充. 它的最主要特点是即定义了调用的规范同时又非常的灵活. 回调函数有些类似于观察者模式,它们的区别在于:观察者模式返回的参数为Event ...

  4. python 论坛模板_python模板 - PH的个人空间 - OSCHINA - 中文开源技术交流社区

    看Python帮助文档模板部分,抄下来以备记忆 11.2. Templating The string module includes a versatile Template class with ...

  5. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  6. qt和python关系_Python与Qt - AlphaJay的个人空间 - OSCHINA - 中文开源技术交流社区

    入门知识- Python与Qt关系 1. Qt内建的Script支持:Qt Script for Applications (QSA),跨平台脚本工具箱,为静态的Qt/C++程序提供了一个脚本界面,可 ...

  7. python颜色相关系数_python相关系数 - osc_w6qmyr6s的个人空间 - OSCHINA - 中文开源技术交流社区...

    皮尔逊相关系数: 用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间. 几组 的点集,以及各个点集中 和 之间的相关系数.我们可以发现相关系数反映的是变量之间的线性关系和相关性的方向( ...

  8. java回调函数的生命_Java的回调函数 - choaklin 的个人空间 - OSCHINA - 中文开源技术交流社区...

    暂且不提回调函数的各种定义,如我本人,虽然知道JavaScript的回调的使用,但是百科了回调的定义,还是觉得云里来雾里去.所以大可先从已熟悉的入手,旁推侧引它的原理,再引出Java版的实现. 因为博 ...

  9. java中打印俄文字母表_符号大全 - simonkjer的个人空间 - OSCHINA - 中文开源技术交流社区...

    符号大全 ︻︼︽︾〒↑↓☉⊙●〇◎¤★☆■▓「」『』◆◇▲△▼▽◣◥◢◣◤ ◥№↑↓→←↘↙Ψ※㊣∑⌒∩[][]@ξζω□∮〓※>∏卐√ ╳々♀♂∞①ㄨ≡╬╭╮╰╯╱╲ ▂ ▂ ▃ ▄ ▅ ▆ ...

最新文章

  1. 张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器
  2. php 提交成功后跳转,PHP提交后跳转的简单示例
  3. joomla插件开发入门(六)
  4. JAVA怎么查找错误,如何调试错误“符号查找错误:未定义符号”
  5. Android 优化电池使用时间——确定和检测网络状态
  6. 服务器资源管理器视图的添加显示的步骤
  7. 1-5Tomcat 目录结构 和 web项目目录结构
  8. 在word中怎么把文字往下挪挪_ps怎么挪动文字位置
  9. oracle io错误的是什么意思,大家帮帮忙,如何解决下面的IO错误问题,急!!!...
  10. mybatis主键返回
  11. CCNP路由重分发(四)EIGRP-to-ISIS
  12. python list array_Python列表list 数组array常用操作集锦【转】
  13. TVS管与稳压二极管的区别
  14. CBA公布对北京首钢处罚结果 相关工作人员遭重罚
  15. 百宝,神烦云免费网络验证autojs实例代码
  16. delphi清除ie缓存的方法
  17. opencv 识别黄色物体的程序代码
  18. 多分类任务ovo、ovr及softmax回归
  19. 一行代码卖出570美元, 天价代码的内幕
  20. 计算机考研考线代和概率论吗,考研数一数二数三的区别有哪些

热门文章

  1. 如何选择你所需的×××产品
  2. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料
  3. python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式
  4. Dead Pixel CodeForces - 1315A(思维)
  5. oracle linux查看磁盘,fdisk命令_Linux fdisk命令使用详解:查看磁盘使用情况与磁盘分区...
  6. java新建配置文件_使用Java输出字符流FileWriter创建配置文件
  7. 『操作系统』 进程的描述与控制 Part3 管程
  8. 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
  9. 想做硬件开发的人员必看
  10. uCOS-II核心算法分析(μCOS-Ⅱ)