莫比乌斯反演

xiaoxiao2021-02-27  178

摘自ACdreamers的博客

还有这篇博客讲的也很不错:点击打开链接

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

 

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

 

     

 

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

 

    (1)若,那么

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

    (3)其它情况下

 

 

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

 

    (1)对任意正整数有

  

                            

 

        (2)对任意正整数有

 

         

 

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

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

转载请注明原文地址: https://www.6miu.com/read-13960.html

最新回复(0)