快乐地打牢基础(14)——莫比乌斯反演

本文深入探讨了莫比乌斯反演在数论中的应用,介绍了莫比乌斯函数、狄利克雷卷积、整除分块等前置知识,并详细证明了莫比乌斯反演的等式。通过实例解析了如何运用莫比乌斯反演解决数论问题,如计算特定条件下的数对个数等。
摘要由CSDN通过智能技术生成

数论千万条,反演第一条。反演不会做,队友两行泪。

一、什么是莫比乌斯反演?

  • g ( n ) = ∑ d ∣ n f ( d ) ⟺ f ( n ) = ∑ d ∣ n μ ( d ) g ( n d ) . . . . . . . . . . . . . ( 1 ) {g(n) = \displaystyle\sum_{d|n}f(d)\Longleftrightarrow f(n) = \displaystyle\sum_{d|n}\mu(d)g(\frac{n}{d})}.............(1) g(n)=dnf(d)f(n)=dnμ(d)g(dn).............(1)
  • g ( n ) = ∑ n ∣ d f ( d ) ⟺ f ( n ) = ∑ n ∣ d μ ( d n ) g ( d ) . . . . . . . . . . . . . . ( 2 ) {g(n) = \displaystyle\sum_{n|d}f(d)\Longleftrightarrow f(n) = \displaystyle\sum_{n|d}\mu(\frac{d}{n})g(d)}..............(2) g(n)=ndf(d)f(n)=ndμ(nd)g(d)..............(2)

很多时候函数 f f f很难求,但是函数 g g g可以比较容易的求出来,所有我们通过求出 g g g来求出 f f f,这个由 g g g求出 f f f的过程就是反演。

二、前置知识


1.莫比乌斯函数

μ ( n ) = { 1 ,            n = 1 ( − 1 ) k ,    n = P 1 P 2 . . . P k 0 ,            o t h e r \mu(n) =\begin{cases} 1,\ \ \ \ \ \ \ \ \ \ n=1\\ (-1)^k,\ \ n = P_1P_2...P_k\\0,\ \ \ \ \ \ \ \ \ \ other\end{cases} μ(n)=1,          n=1(1)k,  n=P1P2...Pk0,          other
其中 P 1 P 2 . . . P k P_1P_2...P_k P1P2...Pk为质数。

莫比乌斯函数推导

线性筛求莫比乌斯函数:

int prime_tot = 0;
bool prime_tag[N];
int prime[N],mu[N];

void get_prime(){
   
    mu[1] = 1;//n = 1时,莫比乌斯函数mu[1] = 1,
    for(int i = 2; i < N; i++){
   
        if(!prime_tag[i]) prime[prime_tot++] = i,mu[i] = -1;//如果i是一个质数,那么其莫比乌斯函数一定是-1
        for(int j = 0; j < prime_tot && i * prime[j] < N; j++){
   
            prime_tag[i * prime[j]] = true;
            if(i % prime[j] == 0){
   
                mu[i * prime[j]] = 0;//可以知道此处prime[j] | i,
                					//那么i * prime[j]里就有一个prime[j]的平方存在
                break;
            }else
                mu[i * prime[j]] = -mu[i];//i * prime[j]为k个质数的乘积,如果k是奇数mu[i]就是-1,
                						//是偶数mu[i]为1
        }
    }
}
2.狄利克雷卷积

狄利克雷卷积是一个对函数的运算。

狄利克雷卷积:
对于两个函数 f , g f,g f,g,它们的狄利克雷卷积是

( f ∗ g ) ( n ) = ∑ d ∣ n f ( d ) g ( n d ) (f*g)(n) = \displaystyle\sum_{d|n}f(d)g(\frac{n}{d}) (fg)(n)=dnf(d)g(dn)

积性函数:
两个数 a , b a,b a,b互质,对于函数 f f f,如果 f ( a b ) = f ( a ) f ( b ) f(ab)=f(a)f(b) f(ab)=f(a)f(b),那么函数 f f f就是一个积性函数。

完全积性函数:
任意两个数 a , b a,b a,b,都有 f ( a b ) = f ( a ) f ( b ) f(ab)=f(a)f(b) f(ab)=f(a)f(b)

常见的积性函数

  • 欧拉函数 φ ( n ) \varphi(n) φ(n)
  • 莫比乌斯函数 μ ( n ) \mu(n) μ(n)
  • 单位函数 I d ( n ) = n Id(n) = n Id(n)=n
  • 不变函数 1 ( n ) = 1 1(n) = 1 1(n)=1,不变的函数,所有值都是 1 1 1
  • 幂函数 i d k ( k ) = n k idk(k) = n^k idk(k)=nk
  • 因子个数函数 d ( n ) , d = 1 ( n ) ∗ 1 ( n ) d(n),d = 1(n)*1(n) d(n),d=1(n)1(n),n的正因子数目
  • 因子和函数 σ ( n ) , σ = 1 ( n ) ∗ I d , n \sigma(n),\sigma = 1(n)*Id,n σ(n),σ=1(n)Idn的所有正因子之和
  • 因子函数 σ k ( n ) σk(n) σk(n),n的所有正因子的k次幂之和
  • 狄利克雷卷积单位元 ε = [ n = = 1 ] \varepsilon = [n==1] ε=[n==1]
  • 逆元:对于每一个 f ( 1 ) = 0̸ f(1)=\not0 f(1)=0的函数 f f f,都有 f ∗ g = ε f∗g=\varepsilon fg=ε

如何求一个函数的逆元:
首先我们定义两个函数 f , g f,g f,g
g ( n ) = 1 f ( 1 ) ( [ n = = 1 ] − ∑ i ∣ n , i ≠ 1 f ( i ) g ( n i ) ) g(n)=\frac{1}{f(1)}\left([n==1]-\sum_{i|n,i\neq 1}f(i)g(\frac{n}{i})\right) g(n)=f(1)1[n==1]in,i=1f(i)g(in)
这样的话,他们的狄利克雷卷积 f ∗ g f*g fg 就是:
∑ i ∣ n f ( i ) g ( n i )                                  = f ( 1 ) g ( n ) + ∑ i ∣ n , i ≠ 1 f ( i ) g ( n i )                                                                                          = f ( 1 ) ∗ 1 f ( 1 ) ( [ n = = 1 ] − ∑ i ∣ n , i ≠ 1 f ( i ) g ( n i ) ) + ∑ i ∣ n , i ≠ 1 f ( i ) g ( n i ) = [ n = = 1 ] \sum_{i|n}f(i)g(\frac{n}{i})\\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =f(1)g(n)+\sum_{i|n,i\neq1}f(i)g(\frac{n}{i})\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =f(1)*\frac{1}{f(1)}\left([n==1]-\sum_{i|n,i\neq 1}f(i)g(\frac{n}{i})\right)+ \sum_{i|n,i\neq1}f(i)g(\frac{n}{i})\\=[n==1] inf(i)g(in)                                =f(1)g(n)+in,i=1f(i)g(in)                                                                                        =f(1)f(1)1[n==1]in,i=1f(i)g(in)+in,i=1f(i)g(in)=[n==1]
此处证明推导均来自:铃悬dalao的博客

一些关于莫比乌斯函数和狄利克雷卷积单位元的性质

1.不变常数 1 1 1 和莫比乌斯函数 μ \mu μ 互为逆元。

用上述求逆元的方法直接套,令 g ( n ) = 1 ( n ) , f ( n ) = μ ( n ) g(n) = 1(n),f(n) = \mu(n) g(n)=1(n),f(n)=μ(n)

2.两个积性函数的狄利克雷卷积是积性函数。

3.积性函数的逆是积性函数。

2和3具体详细的证明还是参考铃悬dalao的博客https://www.luogu.org/blog/lx-2003/mobius-inversion

3.整除分块

看一个题目:求 ∑ k = 1 n ⌊ n k ⌋ \displaystyle\sum^{n}_{k= 1}\lfloor\frac{n}{k}\rfloor k=1nkn的值。
可能会想到暴力,直接遍历一遍,但当 n n n很大的时候,时间是使dalao们不满意的。
所以有了整除分块的想法。
n = 25 n = 25 n=25 来举例:
首先可以发现, ⌊   n     k   ⌋ \lfloor \frac{\ n\ }{\ k\ }\rfloor  k  n  只有 2 n 2\sqrt{n} 2n 种,那我们按照 ⌊   n     k   ⌋ \lfloor \frac{\ n\ }{\ k\ }\rfloor  k  n  的结果分类的:
在这里插入图片描述

int ans = 0;
for(int l = 1 , r; l <= n; l = r + 1){
   
	r = n / (n / l);
	ans += (r - l + 1)(n / l);
}

这样一来,整除通过这种分块的思想就把时间复杂度降到了 O ( 2 n ) O(2\sqrt{n}) O(2n )

三、莫比乌斯反演的证明


  • g ( n ) = ∑ d ∣ n f ( d ) ⟺ f ( n ) = ∑ d ∣ n μ ( d ) g ( n d ) . . . . . . . . . . . . . ( 1 ) {g(n) = \displaystyle\sum_{d|n}f(d)\Longleftrightarrow f(n) = \displaystyle\sum_{d|n}\mu(d)g(\frac{n}{d})}.............(1) g(n)=dnf(d)f(n)=dnμ(d)g(dn).............(1)
  • g ( n ) = ∑ n ∣ d f ( d ) ⟺ f ( n ) = ∑ n ∣ d μ ( d n ) g ( d ) . . . . . . . . . . . . . . ( 2 ) {g(n) = \displaystyle\sum_{n|d}f(d)\Longleftrightarrow f(n) = \displaystyle\sum_{n|d}\mu(\frac{d}{n})g(d)}..............(2) g(n)=ndf(d)f(n)=ndμ(nd)g(d)..............(2)

首先证明 ( 1 ) (1) (1),这很好证明( 1 1 1代表不变函数):
g = f ∗ 1 , f = μ ∗ g = μ ∗ 1 ∗ f = f g = f*1,f = \mu*g=\mu *1*f=f g=f1,f=μg=μ1f=f
然后证明 ( 2 ) (2) (2)
k = d n k = \frac{d}{n} k=nd,则:
∑ n ∣ d μ ( d n ) g ( d ) = ∑ k μ ( k ) g ( n k ) = ∑ k μ ( k ) ∑ ( n k ) ∣ t f ( t ) \sum_{n|d}\mu(\frac{d}{n})g(d)=\sum_{k}\mu(k)g(nk)=\sum_{k}\mu(k)\sum_{(nk)|t}f(t) nd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值