『Möbius函数与Möbius反演』


Möbius函数

定义

设正整数\(n\)算数基本定理分解后为\(n=\prod_{i=1}^{k}p_i^{a_i}\),定义函数
\[ \mu(n)= \begin{cases} 0\ \ (\exists\ i\in[1,k],a_i>1) \\(-1)^k\ \ (\forall\ i\in[1,k],a_i=1) \end{cases} \]
\(\mu(n)\)\(Möbius\)函数。

即分解质因数后,若\(n\)有多个相同的质因子,则\(\mu(n)=0\)。当\(n\)的的质因子各不相同时,若\(n\)有偶数个质因子,则\(\mu(n)=1\),若\(n\)有奇数个质因子,则\(\mu(n)=-1\)

求解

对于单个数字的\(Möbius\)函数,可以直接用试除法分解质因数求解,时间复杂度为\(O(\sqrt n)\)。若要求求解\(1-n\)的所有\(Möbius\)函数,则可以配合线性筛求解:

\(1.\) 对于线性筛找到的一个质数,显然\(\mu(n)=-1\)
\(2.\) 对于线性筛用最小质因子\(p_j\)筛掉一个合数时,由\(Möbius\)函数定义的第二部分可得\(\mu(i*p_j)=-\mu(i)\)

\(Code:\)

inline void sieve(void)
{
    mui[1] = 1;
    for (int i=2;i<=Uplim;i++)
    {
        if (!vis[i])Prime[++cnt] = i , mui[i] = -1;
        for (int j=1;j<=cnt&&i*Prime[j]<=Uplim;j++)
        {
            vis[ i*Prime[j] ] = true;
            if (i%Prime[j]==0)break;
            mui[ i*Prime[j] ] = -mui[i];
        }
    }
}

性质

\(1.\) 对于任意正整数\(n\),若\(n=1\),则\(\sum_{d|n}\mu(d)=1\),若\(n>1\),则\(\sum_{d|n}\mu(d)=0\)

证明:
\(n=1\)时,\(\sum_{d|n}\mu(d)=1\)显然成立。
\(n>1\)时,令\(n=\prod_{i=1}^kp_i^{a_i}\),则\(n\)的因数中\(\mu\)值不为\(0\)的必然是由若干个互不相同的质因子相乘得到的,其中质因子个数为\(r\)的有\(C_k^r\)个,那么显然有\(\sum_{d|n}\mu(d)=\sum_{i=0}^k(-1)^iC_k^i\),此式恰为二项式定理\((a+b)^n=\sum_{i=0}^nC_n^ia^ib^{n-i}\)中代入\(a=-1,b=1,n=k\)的情况,可知\(\sum_{d|n}\mu(d)=(-1+1)^k=0\)

\(2.\) 对于任意正整数\(n\),有\(\sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}\)

证明:
因为\(n=\sum_{d|n}\phi(d)\),令\(F(n)=n,f(n)=\phi(n)\),则由莫比乌斯定理可得\(\phi(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})=\sum_{d|n}\mu(d)*\frac{n}{d}\),所以可得\(\sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}\)

\(3.\) \(Möbius\)函数为积性函数,即对于互质正整数\(a,b\),有\(\mu(a*b)=\mu(a)*\mu(b)\)

证明略。

Möbius反演

Möbius定理

首先,我们需要先了解\(Möbius\)反演的基础,\(Möbius\)定理。

\(Möbius\)定理:
\(1.\) 因数形式:若数论函数\(F,f\)满足\(F(n)=\sum_{d|n}f(d)\),则可以得到\(f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})\)
\(2.\) 倍数形式:若数论函数\(F,f\)满足\(F(n)=\sum_{n|d}f(d)\),则可以得到\(f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)\)

证明:

因数形式

\[\sum_{d|n}\mu(d)F(\frac{n}{d})\\=\sum_{d|n}\mu(d)\sum_{d'|\frac{n}{d}}f(d')=\sum_{d'|n}f(d')\sum_{d|\frac{n}{d'}}\mu(d)\]

由于\(Möbius\)的性质\(1.\)可得\(\sum_{d|n}\mu(d)=1\)当且仅当\(n=1\),所以对于\(\sum_{d|\frac{n}{d'}}\mu(d)\)\(0\),当且仅当\(\frac{n}{d'}=1\),即\(n=d'\),所以有
\[\sum_{d'|n}f(d')\sum_{d|\frac{n}{d'}}\mu(d)=f(n)\]

倍数形式

\(\frac{d}{n}=k\),则可以得到
\[ \sum_{n|d}\mu(\frac{d}{n})F(d) \\=\sum_{k=1}^{+\infty}\mu(k)F(nk)=\sum_{k=1}^{+\infty}\mu(k)\sum_{nk|t}f(t) \\=\sum_{n|t}f(t)\sum_{k|\frac{t}{n}}\mu(k) \]

由于\(Möbius\)的性质\(1.\)可得\(\sum_{d|n}\mu(d)=1\)当且仅当\(n=1\),所以对于\(\sum_{k|\frac{t}{n}}\mu(k)\)\(0\),当且仅当\(\frac{n}{t}=1\),即\(n=t\),所以有
\[\sum_{n|t}f(t)\sum_{k|\frac{t}{n}}\mu(k)=f(n)\]

应用

在某些题目中,若有某个函数\(f\)的值比较难求,但是其自变量倍数或约数的函数值求和\(F\)函数比较好求,可以先求出函数\(F\)的值,再利用\(Möbius\)定理,反演求出原函数的值。


转载于:https://www.cnblogs.com/Parsnip/p/10738994.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值