莫比乌斯反演小结

来源:互联网 发布:吴佩频道知乎 编辑:程序博客网 时间:2024/05/16 05:04

莫比乌斯反演在数论中占有重要的地位,许多情况下能大大简化运算。那么我们先来认识莫比乌斯反演公式。

 

定理:是定义在非负整数集合上的两个函数,并且满足条件,那么我们得到结论

 

     

 

在上面的公式中有一个函数,它的定义如下:

 

    (1)若,那么

    (2)若均为互异素数,那么

    (3)其它情况下

 

 

对于函数,它有如下的常见性质:

 

    (1)对任意正整数

  

                           

 

        (2)对任意正整数

 

        

 

线性筛选求莫比乌斯反演函数代码。

void Init(){    memset(vis,0,sizeof(vis));    mu[1] = 1;    cnt = 0;    for(int i=2; i<N; i++)    {        if(!vis[i])        {            prime[cnt++] = i;            mu[i] = -1;        }        for(int j=0; j<cnt&&i*prime[j]<N; j++)        {            vis[i*prime[j]] = 1;            if(i%prime[j]) mu[i*prime[j]] = -mu[i];            else            {                mu[i*prime[j]] = 0;                break;            }        }    }}



 

有了上面的知识,现在我们来证明莫比乌斯反演定理。

 

证明

 



这个证明其实也并不是很麻烦,只不过我数学可能确实差,花了些时间才看懂。


主要就是第二步到第三步:

  第二步表达的是对于固定的n,对所有能整除n的d进行累加,对于固定的d,对所有能整除n/d的d'的f(d')累加。

  第三步只不过调换了一下顺序而已。d'能整除n/d,自然可以整除n,对于固定的f(d'),把第二步里的所有抽取出来放到后面,就成为了第三步。

1 0
原创粉丝点击