数学板块学习之莫比乌斯

博客主要介绍了莫比乌斯函数和莫比乌斯反演。给出莫比乌斯函数定义、性质及求该函数的代码,还阐述了莫比乌斯反演公式及证明过程。同时提供了做题方法和套路,如将题目转换为gcd(x,y)=1形式求解等,最后提及相关小性质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

莫比乌斯函数

对于函数F(n)=Σd∣nf(d)F(n)=\Sigma_{d|n}f(d)F(n)=Σdnf(d) (其中d∣nd|ndn表示ddd能够被nnn整除),根据定义有
F(1)=f(1)F(1)=f(1)F(1)=f(1)
F(2)=f(1)+f(2)F(2)=f(1)+f(2)F(2)=f(1)+f(2)
F(3)=f(1)+f(3)F(3)=f(1)+f(3)F(3)=f(1)+f(3)
F(4)=f(1)+f(2)+f(4)F(4)=f(1)+f(2)+f(4)F(4)=f(1)+f(2)+f(4)
F(5)=f(1)+f(5)F(5)=f(1)+f(5)F(5)=f(1)+f(5)
F(6)=f(1)+f(2)+f(3)+f(6)F(6)=f(1)+f(2)+f(3)+f(6)F(6)=f(1)+f(2)+f(3)+f(6)
F(7)=f(1)+f(7)F(7)=f(1)+f(7)F(7)=f(1)+f(7)
F(8)=f(1)+f(2)+f(4)+f(8)F(8)=f(1)+f(2)+f(4)+f(8)F(8)=f(1)+f(2)+f(4)+f(8)

于是
f(1)=F(1)f(1)=F(1)f(1)=F(1)
f(2)=F(2)−F(1)f(2)=F(2)-F(1)f(2)=F(2)F(1)
f(3)=F(3)−F(1)f(3)=F(3)-F(1)f(3)=F(3)F(1)
f(4)=F(4)−F(2)f(4)=F(4)-F(2)f(4)=F(4)F(2)
f(5)=F(5)−F(1)f(5)=F(5)-F(1)f(5)=F(5)F(1)
f(6)=F(6)−F(3)−F(2)+F(1)f(6)=F(6)-F(3)-F(2)+F(1)f(6)=F(6)F(3)F(2)+F(1)
f(7)=F(7)−F(1)f(7)=F(7)-F(1)f(7)=F(7)F(1)
f(8)=F(8)−F(4)f(8)=F(8)-F(4)f(8)=F(8)F(4)

我们可以由F(n)=Σd∣nf(d)F(n)=\Sigma_{d|n}f(d)F(n)=Σdnf(d) ,如果已知F(n)F(n)F(n)我们就可以反演推出f(n)f(n)f(n)
公式:
F(n)=Σd∣nf(d)⇒ f(n)=Σd∣nμ(d)F(nd)F(n)=\Sigma_{d|n}f(d)\Rightarrow\ f(n)=\Sigma_{d|n}\mu(d)F(\frac{n}{d}) F(n)=Σdnf(d) f(n)=Σdnμ(d)F(dn)
其中的μ(d)\mu(d)μ(d)即为莫比乌斯函数,定义为

  1. d=1d=1d=1μ(d)=1\mu(d)=1μ(d)=1
  2. d=p1p2p3 ⋯ pkd=p_{1}p_{2}p_{3}\ \cdots\ p_{k}d=p1p2p3  pk,其中pip_{i}pi为互异素数,则μ(d)=(−1)k\mu(d)=(-1)^{k}μ(d)=(1)k
  3. 其他情况μ(d)=0\mu(d)=0μ(d)=0

莫比乌斯函数性质

1.对于任意正整数nnn
Σd∣nμ(d)={1n=10n>1 \Sigma_{d|n}\mu(d)= \begin{cases} 1 & \text{n=1}\\ 0 & \text{n>1} \end{cases} Σdnμ(d)={10n=1n>1
2.对于任意正整数nnn
Σd∣nμ(d)d=φ(n)n \Sigma_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n} Σdndμ(d)=nφ(n)
其中的φ(n)\varphi(n)φ(n)是欧拉函数
3.μ(d)为积性函数\mu(d)为积性函数μ(d),也因为它为积性函数所以可以用线性筛求出

求莫比乌斯函数代码

int prime[maxn],mu[maxn],tot = 0;
bool vis[maxn];
void Mobius(int n){
    me(vis,false);
    mu[1] = 1;
    for(int i = 2; i <= n; ++i){
        if(!vis[i]) prime[++tot] = i,mu[i] = -1;
        for(int j = 1; j <= tot & i*prime[j] <= n; ++j){
            vis[i*prime[j]] = true;
            if(i%prime[j] == 0){
                mu[i*prime[j]] = 0;
                break;
            }
            mu[i*prime[j]] = -mu[i];
        }
    }
}

莫比乌斯反演

公式:
F(n)=Σd∣nf(d)⇒ f(n)=Σd∣nμ(d)F(nd)F(n)=\Sigma_{d|n}f(d)\Rightarrow\ f(n)=\Sigma_{d|n}\mu(d)F(\frac{n}{d})F(n)=Σdnf(d) f(n)=Σdnμ(d)F(dn)
F(n)=Σn∣df(d)⇒ f(n)=Σn∣dμ(dn)F(d)F(n)=\Sigma_{n|d}f(d)\Rightarrow\ f(n)=\Sigma_{n|d}\mu(\frac{d}{n})F(d)F(n)=Σndf(d) f(n)=Σndμ(nd)F(d)
证明:
f(n)=Σd∣nμ(d)F(nd)=Σd∣nμ(d)Σk∣ndf(k)=Σk∣nf(k)Σd∣nkμ(d)f(n)=\Sigma_{d|n}\mu(d)F(\frac{n}{d})=\Sigma_{d|n}\mu(d)\Sigma_{k|\frac{n}{d}}f(k)=\Sigma_{k|n}f(k)\Sigma_{d|\frac{n}{k}}\mu(d)f(n)=Σdnμ(d)F(dn)=Σdnμ(d)Σkdnf(k)=Σknf(k)Σdknμ(d)
因为:
Σd∣nμ(d)={1n=10n&gt;1\Sigma_{d|n}\mu(d)=\begin{cases}1 &amp; \text{n=1}\\0 &amp; \text{n&gt;1}\end{cases}Σdnμ(d)={10n=1n>1
所以只有n=kn=kn=k
Σk∣nf(k)Σd∣nkμ(d)=f(k)=f(n)\Sigma_{k|n}f(k)\Sigma_{d|\frac{n}{k}}\mu(d)=f(k)=f(n)Σknf(k)Σdknμ(d)=f(k)=f(n)

做题方法(套路):
一般题目都是将其转换为gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1的形式求解
f(x)=∑i=1n∑j=1m[gcd(i,j)==x]f(x)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==x]f(x)=i=1nj=1m[gcd(i,j)==x]
F(x)=∑x∣df(d)F(x)=\sum_{x|d}^{}f(d)F(x)=xdf(d)
所以
F(x)=∑x∣d∑i=1n∑j=1m[gcd(i,j)==d]=∑i=1n∑j=1m[x∣gcd(i,j)]=⌊nx⌋⌊mx⌋F(x)=\sum_{x|d}^{}\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==d]=\sum_{i=1}^{n}\sum_{j=1}^{m}[x|gcd(i,j)]=\lfloor\cfrac{n}{x}\rfloor\lfloor\cfrac{m}{x}\rfloorF(x)=xdi=1nj=1m[gcd(i,j)==d]=i=1nj=1m[xgcd(i,j)]=xnxm
从而
f(x)=∑x∣dμ(dx)F(d)=∑x∣dμ(dx)⌊nd⌋⌊md⌋f(x)=\sum_{x|d}^{}\mu(\cfrac{d}{x})F(d)=\sum_{x|d}^{}\mu(\cfrac{d}{x})\lfloor\cfrac{n}{d}\rfloor\lfloor\cfrac{m}{d}\rfloorf(x)=xdμ(xd)F(d)=xdμ(xd)dndm
一般求f(1)f(1)f(1)
f(1)=∑d=1min(n,m)μ(d)⌊nd⌋⌊md⌋f(1)=\sum_{d=1}^{min(n,m)}\mu(d)\lfloor\cfrac{n}{d}\rfloor\lfloor\cfrac{m}{d}\rfloorf(1)=d=1min(n,m)μ(d)dndm

套路2:
由莫比乌斯定理得
[gcd(i,j)==1]=∑d∣gcd(i,j)μ(d)=∑d∣i,d∣jμ(d)[gcd(i,j)==1]=\sum_{d|gcd(i,j)}^{}\mu(d)=\sum_{d|i,d|j}^{}\mu(d)[gcd(i,j)==1]=dgcd(i,j)μ(d)=di,djμ(d)
所以
ans=∑i=1n∑j=1m∑d∣i,d∣jμ(d)ans=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|i,d|j}^{}\mu(d)ans=i=1nj=1mdi,djμ(d)
提贡献:
ans=∑d=1min(n,m)μ(d)∑d∣in∑d∣jm1ans=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{d|i}^{n}\sum_{d|j}^{m}1ans=d=1min(n,m)μ(d)dindjm1

ans=∑d=1min(n,m)μ(d)⌊nd⌋⌊nd⌋ans=\sum_{d=1}^{min(n,m)}\mu(d)\lfloor\cfrac{n}{d}\rfloor\lfloor\cfrac{n}{d}\rfloorans=d=1min(n,m)μ(d)dndn
小性质:
d(nm)=∑i∣n∑j∣m[gcd(i,j)==1]d(nm)=\sum_{i|n}\sum_{j|m}[gcd(i,j)==1]d(nm)=injm[gcd(i,j)==1]
其中d(x)表示x的约数的个数d(x)表示x的约数的个数d(x)x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值