• 【数论】莫比乌斯函数


    莫比乌斯函数

        莫比乌斯函数!?提到这个东西你会不会想到一个大神级的玩意:莫比乌斯反演

          莫比乌斯函数其实很简单,非常非常简单……

    好了,步入正题吧……

           我们定义一个函数M,参数为x,函数内容如下:

           X=X1^P1*X2^P2*……*Xa^Xk

           那么这个式子到底是用来干什么的呢?

           我们使X1、X2、X3都存在一个素数集合中,那么它们必定都是素数

           则P1、P2、P3……为指数,因为对于任何数x(x>=2),都可以写成这种形式。

           比如我们举几个例子:

           12=3*4

           12=3*2*2

           12=2^2*3^1

            

           2=2

           2=2^1

           好,理解了这个我们设定P这个数组中间均>=1(小于1就没有意义了)

           我们先把这个x按如上方式分解

           我们设定,如果这里面的最大指数大于1了,那么我们的M(x)=0;

           如果最大指数等于1,则所有的指数都是1,从而M(x)=(-1)^k

           注意:M(1)=1!

           根据如上结论,M(x)=-1(x为素数)

                                M(x^n)=0(x为素数,n为大于1任意值)

            不难看出如上结论是正确的。

            因为如果x是一个素数的话,那么X1直接等于x,则P1直接为1,最终答案(-1)^1:-1

            如果这是一个素数的次方,那么那么X1直接等于x,p1赋值为n,如上n大于1,根据原理答案为0

            

    那,它到底是干神马用的呢?

            我们发现,M(1)=1,M(2)=-1,M(3)=-1,M(5)=-1,M(6)=1,M(10)=1。

            有没有发现,能写成两个素数相乘的答案都是1

                              能写成三个素数相乘的答案都是-1

                                               ……

            于是我们只需要将它反过来,就可以求解容斥原理啦!

            还有求逆元的一些各种用途,有兴趣的同学可以看看。

  • 相关阅读:
    Linux中rsync备份数据使用实例
    8个Date命令使用示例
    Linux中如何使用alias命令
    在LVM中恢复已删除的逻辑卷
    使用Dmidecode获取硬件信息使用实例
    Linux系统使用SSH登录之前如何显示横幅消息
    在Linux中修改打开文件数量限制的3种方法
    Linux中监控磁盘分区和使用情况的几个工具
    如何解决Ubuntu提示没有找到ifconfig命令
    Linux中ip命令的使用实例
  • 原文地址:https://www.cnblogs.com/wxjor/p/5933213.html
Copyright © 2020-2023  润新知