莫比乌斯反演个人小结

莫比乌斯反演个人小结

推荐

1.浅谈一类积性函数的前缀和(http://blog.csdn.net/skywalkert/article/details/50500009)
2.《贾志鹏线性筛》
3.《炫酷反演魔术》

这篇博客主要是学习了以上的东西的个人总结,如有错误请告知本人
假装大家现在没有看过上面那篇博客,先介绍一下

积性函数的定义

1.若f(n)的定义域为正整数域,值域为复数,即\(f:{Z}^{+}\rightarrow C\),则称f(n)为数论函数。
2.若f(n)为数论函数,且f(1)=1,对于互质的正整数p,q有f(p⋅q)=f(p)⋅f(q),则称其为积性函数。
3.若f(n)为积性函数,且对于任意正整数p,q都有f(p⋅q)=f(p)⋅f(q),则称其为完全积性函数。

一些函数

1.下面的式子中\(d|n\)表示d是n的因子;\([command]\)为if,command成立为 1,否则为0;\((a,b)\)表示a,b的gcd;\(\lfloor \frac{n}{i}\rfloor\)表示整除
2.除数函数\({\sigma} _ {k}(n)=\sum _ {d|n}^{}{d}^{k}\),表示n的约数的k次幂和
3.约数个数函数\(\tau (n)={\sigma } _ {0}(n)=\sum_ {d|n}^{}1\),表示n的约数个数,一般也写为d(n)。
4.约数和函数\(\sigma (n)={\sigma } _ {1}(n)=\sum_ {d|n}^{}d\),表示n的约数之和。
5.欧拉函数\(\varphi (n)=\sum_ {i=1}^{n}[(i,n)=1]\cdot 1\),表示不大于n且与n互质的正整数个数

-欧拉函数是积性函数,不是完全积性函数
-如果将n质数分解,\(n=\prod_ {i=1}^{t}{{p} _ {i}}^{{k} _ {i}}\)
-\(\varphi (n)=n\cdot\prod_ {i=1}^{t}(1-\frac{1}{{p} _ {i}})\)
-根据以上得到\(\varphi(1)=1,\varphi(p)=p-1,\varphi({p}^{k})={p}^{k-1}\cdot(p-1)\)
-\(\varphi(n)\)为偶数,当n>2时
-欧拉公式:\({n}^{\varphi(m)}=1\quad(mod\,m)\),当(n,m)=1时
-一个公式:\({n}^{x}={n}^{x\%\varphi(m)+\varphi(m)}\quad(mod\,m)\),唯一条件是\(x\geq\varphi(m)\)

6.莫比乌斯函数\(\mu(n)\),在狄利克雷卷积的乘法中与恒等函数互为逆元,\(\mu(1)=1\),对于无平方因子数\(n=\prod_ {i=1}^{t}{p} _ {i}\)\(\mu(n)={(-1)}^{t}\),对于有平方因子数n有\(\mu(n)=0\)
7.元函数\(e(n)=[n=1]\),狄利克雷卷积的乘法单位元,完全积性。
8.恒等函数\(I(n)=1\),完全积性。
9.单位函数\(id(n)=n\),完全积性。
10.幂函数\({id}^{k}(n)=n^k\),完全积性。

狄利克雷卷积(Dirichlet product)

数论函数f和g狄利克雷卷积定义为\(( f \ast g)(n)=\sum_ {d|n}f(d)\cdot g(\frac {n} {d})\),狄利克雷卷积满足交换律、结合律,对加法满足分配律
1.\(f\ast e=f\)\(e\)是单位元
2.\(I\ast \mu=e\)
3.\(I\ast \varphi=id\)
4.\((id\cdot\varphi)\ast id=id^2\)
5.如果f和g是积性,那么\(f\ast g\)是积性的。对于\(f(n)=\sum_ {d|n}g(d)\),只要一者积性,两者都积性。但反演式不要求f或g积性
6.根据式2,\(e\)是卷积单位元,所以\(I\)\(\mu\)互为逆元
7.那么
\(g=f\ast I\quad g\ast \mu=f\)
这就是莫比乌斯反演

给出一些反演式和代码

1.\(f(n)=\sum_ {d|n}g(d)\)
\(\quad g(n)=\sum_ {d|n}\mu(n/d)f(d)=\sum_ {d|n}\mu(d)f(n/d)\)
2.\(f(n)=\sum_ {n|d}g(d)\)
\(\quad g(n)=\sum_ {n|d}\mu(d/n)f(d)\)
3.\(f(n)=\sum_ {d\geq1}g(d)\)
\(\quad g(n)=\sum_ {d\geq1}\mu(d/n)f(d)\)
4.\(f(n)=\sum_ {k=0}^{n}C(n,k)g(k)\)
\(\quad g(n)=\sum_ {k=0}^{n}(-1)^{n+k}C(n,k)f(k)\)
5.\(f(n)=\sum_ {k=n}^{\infty}C(k,n)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(k,n)f(k)\)
6.\(f(n)=\sum_ {k=0}^{n}C(n+p,k+p)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(n+p,k+p)f(k)\)
7.\(f(n)=\sum_ {k=n}^{\infty}C(n+p,k+p)g(k)\)
\(\quad g(n)=\sum_ {k=n}^{\infty}(-1)^{n+k}C(n+p,k+p)f(k)\)
8.\(f(s)=\sum_ {t\subseteq s}g(t)\)
\(\quad g(s)=\sum_ {t\subseteq s}(-1)^{|s|-|t|}f(t)\)
9.\(f(n)=\sum_ {k=1}^{n}t(k)g(\lfloor \frac{n}{k}\rfloor)\)
\(\quad g(n)=\sum_ {k=1}^{n}\mu(k)t(k)f(\lfloor \frac{n}{k}\rfloor)\)推广莫比乌斯,条件:f,g数论函数,t完全积性,t(1)=1

******************************已知f[n]=(求和d|n)g(d),求g nlogn
for (int i = 1; i <= n; ++i)
  for (int j = i + i; j <= n; j += i)		
    f[j] -= f[i];

*****************************f[n]=(求和d|n)g(d),已知g,求f
for (int i = n; i >= 1; --i)
  for (int j = i + i; j <= n; j += i)		
    f[j] += f[i];

******************************已知f[n]=(求和n|d)g(d),求g nlogn
for (int i = n; i >= 1; --i)
  for (int j = i + i; j <= n; j += i)		
    f[i] -= f[j];

*****************************f[n]=(求和n|d)g(d),已知g,求f
for (int i = 1; i <= n; ++i)
  for (int j = i + i; j <= n; j += i)		
    f[i] += f[j];
**********************************
f[s]存原来的元素,之后f[s]存子集所有元素和
for (int i = 0; i < n; i++)
    for (int s = 0; s < (1 << n); s++)
        if (s >> i & 1)
            f[s] += f[s ^ 1 << i];


***************************************
f[s]存子集所有元素和,之后f[s]存原来的元素

for (int i = 0; i < n; i++)
    for (int s = 0; s < (1 << n); s++)
        if (s >> i & 1)
            f[s] -= f[s ^ 1 << i];
******************************************
数论卷积nlogn	算1-n的h[x]=(求和d|x)(f[d]*g[x/d])	已知f,g的1-n

int f[MAXN],g[MAXN],h[MAXN]={0};
void calc(int n)
{    
    for (int i=1;i*i<=n;i++)
        for (int j=i;i*j<=n;j++)
            if(j==i)h[i*j]+=f[i]*g[i];
            else h[i*j]+=f[i]*g[j]+f[j]*g[i];
}    

一些有用的式子

1.\(\sum_ {i=1}^{n}{\sigma} _ {k}(i)=\sum_ {i=1}^{n}\sum_ {d|i}d^k=\sum_ {d=1}^{n}d^k\lfloor\frac{n}{d}\rfloor\)
2.\(\sum_ {d=1}^{n}d\lfloor\frac{n}{d}\rfloor=\sum_ {d=1}^{n}\frac{\lfloor\frac{n}{d}\rfloor(\lfloor\frac{n}{d}\rfloor+1)}{2}\)
3.\([n=0]=\sum_ {k=0}^{n}(-1)^k C(n,k)\)
4.\([n=1]=\sum_ {d|n}\mu(d)\)
5.\(n=\sum_ {d|n}\varphi(d)\)
6.\([s=\emptyset]=\sum_ {t\subseteq s}(-1)^{|t|}\)
7.\(\varphi(n)=\sum_ {d|n}\mu(d)\frac{n}{d}\)
8.\(\frac{\varphi(n)}{n}=\sum_ {d|n}\frac{\mu(d)}{d}\)此式中为分数
9.\(\varphi(n)=\sum_ {i=1}^{n}[(n,i)=1]\)与n互质个数
10.\(\frac{n\varphi(n)+[n=1]}{2}=\sum_ {i=1}^{n}i\cdot[(n,i)=1]\)与n互质和
11.\(\sum_ {d|m}\varphi(d)n^{\frac{m}{d}}=0\quad(mod\,m)\)

一些技巧

1.我们有nlog子集求和的算法,那么我们如果想对父集求和的话怎么办呢?

先取反赋值,那么就是子集求和了

2.常用的分解方法
\(n=\prod_ {i=1}^{t}{{p} _ {i}}^{{k} _ {i}}\)
对于积性函数f存在
\(g(n)=\sum_ {d|n}f(d)=\prod_ {i=1}^{t}(\sum_ {j=0}^{ki}f(p _ i^j))\)
如果f是完全积性函数的话还能进一步化简

一些科技

从上面那篇博客中得知了求积性函数求前缀和的方法,但构造那个特定的函数一般人是想不出来的。前几天突然看到了个式子:
\(h(n)=\sum_ {i=1}^{n} f(i)\)
$\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}h(\lfloor \frac{n}{i}\rfloor) \( \)\qquad\qquad\quad\ \ =h(n)+\sum_ {i=2}^{n}h(\lfloor \frac{n}{i}\rfloor)$

\[h(n)=\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}h(\lfloor \frac{n}{i}\rfloor) \]

根据上式就可以轻松求得欧拉函数\(\varphi\)和莫比乌斯函数\(\mu\)的前缀和

1.欧拉函数\(\varphi\),求它的前缀和函数\(\Phi (n)=\sum_{i=1}^{n}\varphi(i)\)
代入得\(\Phi (n)=\sum_ {i=1}^{n}\varphi(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}\Phi(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\varphi(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}\sum_ {d|i}\varphi(d)=\sum_ {i=1}^{n}i=\frac{n(n+1)}{2}\)
所以\(\Phi (n)=\frac{n(n+1)}{2}-\sum_ {i=2}^{n}\Phi(\lfloor \frac{n}{i}\rfloor)\)
此式可以在预处理\(n^{\frac{2}{3}}\)个数的前提下,迭代达到\(O(n^{\frac{2}{3}})\)的复杂度

2.同理,对于莫比乌斯函数\(\mu\)的前缀和函数\(M(n)=\sum_{i=1}^{n}\mu(i)\)
代入得\(M(n)=\sum_ {i=1}^{n}\mu(i)\lfloor \frac{n}{i}\rfloor-\sum_ {i=2}^{n}M(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\mu(i)\lfloor \frac{n}{i}\rfloor=\sum_ {i=1}^{n}\sum_ {d|i}\mu(d)=\sum_ {i=1}^{n}[i=1]=1\)
所以\(M (n)=1-\sum_ {i=2}^{n}M(\lfloor \frac{n}{i}\rfloor)\)
此式可以在预处理\(n^{\frac{2}{3}}\)个数的前提下,迭代达到\(O(n^{\frac{2}{3}})\)的复杂度

所以关键是化简\(\sum_ {i=1}^{n}f(i)\lfloor \frac{n}{i}\rfloor\)


另一个式子
\(\sum_ {i=1}^{n}\sum_ {d|i}f(d)\lfloor \frac{i}{d}\rfloor=\sum_ {i=1}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)

\[h(n)=\sum_ {i=1}^{n}\sum_ {d|i}f(d)\lfloor \frac{i}{d}\rfloor-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor) \]

例子
函数\(f(n)=i\cdot\varphi(n)\),求它的前缀和函数\(h (n)=\sum_{i=1}^{n}i\cdot\varphi(i)\)
代入得\(h(n)=\sum_ {i=1}^{n}\sum_ {d|i}d\cdot\varphi(d)\lfloor \frac{i}{d}\rfloor-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)
\(\sum_ {i=1}^{n}\sum_ {d|i}d\cdot\varphi(d)\lfloor \frac{i}{d}\rfloor=\sum_ {i=1}^{n}i\cdot\sum_ {d|i}\varphi(d)=\sum_ {i=1}^{n}i^2=\frac{n(n+1)(2n+1)}{6}\)
所以\(h (n)=\frac{n(n+1)(2n+1)}{6}-\sum_ {i=2}^{n}i\cdot h(\lfloor \frac{n}{i}\rfloor)\)
此式可以在预处理\(n^{\frac{2}{3}}\)个数的前提下,迭代达到\(O(n^{\frac{2}{3}})\)的复杂度

posted @ 2016-08-01 01:07  femsub  阅读(2000)  评论(1编辑  收藏  举报