欧拉与莫比乌斯

1 篇文章 0 订阅

更多文章可以在本人的个人小站:https://kaiserwilheim.github.io 查看。
转载请注明出处。

初稿写于2021-10-10,
再修改于2022-02-07

Achtung: 本文章使用p来代指“任意质数”,请勿混淆。

首先让我们膜拜一下莱昂哈德·欧拉(Leonhard Euler):

欧拉

欧拉函数

欧拉函数 φ ( n ) φ(n) φ(n) 的概念是在 [ 0 , n − 1 ] [0,n-1] [0,n1] 范围内有多少个整数与 n n n 互质。

其中,我们规定 φ ( 1 ) = 1 φ(1)=1 φ(1)=1

且不难发现, φ ( p ) = p − 1 φ(p)=p-1 φ(p)=p1

欧拉函数的一些性质

欧拉函数是积性函数

φ ( m n ) = φ ( m ) φ ( n ) φ(mn) = φ(m) φ(n) φ(mn)=φ(m)φ(n)

并且当 n   m o d   2 ≡ 1 n \bmod{2} \equiv 1 nmod21 时, φ ( 2 n ) = φ ( n ) φ(2n) = φ(n) φ(2n)=φ(n)

而当 n   m o d   2 ≡ 0 n \bmod{2} \equiv 0 nmod20(即 2 ∣ n 2|n 2n)时, φ ( 2 n ) = 2 φ ( n ) φ(2n) = 2 φ(n) φ(2n)=2φ(n)

∑ m ∣ n n m = n φ ( n ) 2 \displaystyle \sum_{m|n}^{n} m = n \frac{φ(n)}{2} mnnm=n2φ(n)

∑ m ∣ n n m = n φ ( n ) 2 \sum_{m|n}^{n} m = n \frac{φ(n)}{2} mnnm=n2φ(n)

易证。

∑ d ∣ n φ ( d ) = n \displaystyle \sum_{d|n} φ(d) = n dnφ(d)=n

∑ d ∣ n φ ( d ) = n \sum_{d|n} φ(d) = n dnφ(d)=n

我们利用莫比乌斯反演的相关知识可以得出。

或者我们这样考虑:
如果 gcd ⁡ ( k , n ) = d \gcd(k,n) = d gcd(k,n)=d ,那么 gcd ⁡ ( k d , n d ) = 1 ( k < n ) \gcd(\frac{k}{d} , \frac{n}{d}) = 1 (k < n) gcd(dk,dn)=1(k<n)
我们如果设 f ( x ) f(x) f(x) 为满足 gcd ⁡ ( k , n ) = x \gcd(k,n) = x gcd(k,n)=x 的数的个数,那么 n = ∑ i − 1 n f ( i ) n = \sum_{i-1}^n f(i) n=i1nf(i)
根据上面的证明,我们可以发现, f ( x ) = φ ( n x ) f(x) = φ(\frac{n}{x}) f(x)=φ(xn) ,从而得到 n = ∑ d ∣ n φ ( n d ) n = \sum_{d|n} φ(\frac{n}{d}) n=dnφ(dn) 。注意此时我们的约数 d d d n d \frac{n}{d} dn 具有对称性,所以上面的式子可以化为 n = ∑ d ∣ n φ ( d ) n = \sum_{d|n} φ(d) n=dnφ(d)

φ ( p k ) = p k − p k − 1 \displaystyle φ(p^k) = p^k - p^{k-1} φ(pk)=pkpk1

n = p k n = p^k n=pk ,那么 φ ( n ) = p k − p k − 1 φ(n) = p^k - p^{k-1} φ(n)=pkpk1

由定义可知。
因为有 n ⊥ p k    ⟺    p ∤ n n \perp p^k \iff p \not \mid n npkpn 。在 { 0 , 1 , p , ⋯   , p k − 1 } \{ 0,1,p,\cdots ,p^k-1 \} {0,1,p,,pk1} 中, p p p 的倍数是 { 0 , p , 2 p , ⋯   , p k − p } \{ 0,p,2p,\cdots ,p^k-p \} {0,p,2p,,pkp} ,共有 p k − 1 p^{k-1} pk1 个。

φ ( ∏ i = 1 s p i k i ) = ∏ i = 1 s p i k i − 1 ⋅ ( p i − 1 ) \displaystyle φ(\prod_{i=1}^s p_i^{k_i}) = \prod_{i=1}^s p_i^{k_i - 1} · (p_i - 1) φ(i=1spiki)=i=1spiki1(pi1)

由唯一分解定理,设 n = ∏ i = 1 s p i k i n = \prod_{i=1}^s p_i^{k_i} n=i=1spiki ,则有 φ ( n ) = ∏ i = 1 s p i − 1 p i φ(n) = \prod_{i=1}^s \frac{p_i - 1}{p_i} φ(n)=i=1spipi1

证明:

φ ( n ) = ∏ i = 1 s φ ( p i k i ) = ∏ i = 1 s p i k i − p i k i − 1 = ∏ i = 1 s ( p i − 1 ) × p i k i − 1 = ∏ i = 1 s ( 1 − 1 p i ) p i k i = n ∏ i = 1 s ( 1 − 1 p i ) \begin{aligned} φ(n) &= \prod_{i=1}^s φ(p_i^{k_i}) \\ &= \prod_{i=1}^s p_i^{k_i} - p_i^{k_i - 1} \\ &= \prod_{i=1}^s (p_i - 1) \times p_i^{k_i - 1} \\ &= \prod_{i=1}^s (1 - \frac{1}{p_i}) p_i^{k_i} \\ &= n \prod_{i=1}^s (1 - \frac{1}{p_i}) \end{aligned} φ(n)=i=1sφ(piki)=i=1spikipiki1=i=1s(pi1)×piki1=i=1s(1pi1)piki=ni=1s(1pi1)

计算欧拉函数的值

单点求值

我们不难发现,当 m m m 是一个质数的整数幂 p k p^k pk 时,我们有
φ ( p k ) = p k − p k − 1 φ(p^k)=p^k-p^{k-1} φ(pk)=pkpk1
;
如果 m > 1 m>1 m>1 不是一个质数的整数幂,那我们可以把 m m m 拆分成 m = m 1 m 2 m=m_1 m_2 m=m1m2 ,其中 m 1 ⊥ m 2 m_1 \perp m_2 m1m2。这样这个数就可以在剩余系里表示为 ( n   m o d   m 1 , n   m o d   m 2 ) (n \bmod m_1 , n \bmod m_2) (nmodm1,nmodm2) 。如果你不知道什么是剩余系,可以看我的博客:(咕了)。

根据
k ⊥ m 且 k ⊥ n    ⟺    k ⊥ m n k \perp m 且 k \perp n \iff k \perp mn kmknkmn

gcd ⁡ ( m , n ) = gcd ⁡ ( n   m o d   m , m ) \gcd(m,n) = \gcd(n \bmod m,m) gcd(m,n)=gcd(nmodm,m)
可得
n ⊥ m    ⟺    n   m o d   m 1 ⊥ m 1 且 n   m o d   m 2 ⊥ m 2 n \perp m \iff n \bmod m_1 \perp m_1 且 n \bmod m_2 \perp m_2 nmnmodm1m1nmodm2m2
,由此,我们可以推得
φ ( m ) = φ ( m 1 ) φ ( m 2 ) , m 1 ⊥ m 2 φ(m)=φ(m_1)φ(m_2),m_1 \perp m_2 φ(m)=φ(m1)φ(m2),m1m2
所以,欧拉函数是一个积性函数。

欧拉函数的通项公式是
φ ( m ) = ∏ p ∣ m ( p m p − p m p − 1 ) = m ∏ p ∣ m ( 1 − 1 p ) φ(m)=\prod_{p|m} (p^{m_p}-p^{m_p-1})=m \prod_{p|m}(1-\frac{1}{p}) φ(m)=pm(pmppmp1)=mpm(1p1)

上代码:

int euler_phi(int n)
{
	int m = int(sqrt(n + 0.5));
	int ans = n;
	for(int i = 2; i <= m; i++)
		if(n % i == 0)
		{
			ans = ans / i * (i - 1);
			while(n % i == 0) n /= i;
		}
	if(n > 1) ans = ans / n * (n - 1);
	return ans;
}

如果将代码改为下面的形式可以优化一些:

int euler_phi(int n)
{
	int ans = n;
	for(int i = 2; i * i <= n; i++)
		if(n % i == 0)
		{
			ans = ans / i * (i - 1);
			while(n % i == 0) n /= i;
		}
	if(n > 1) ans = ans / n * (n - 1);
	return ans;
}

区间筛

而我们可以使用筛法来求连续区间的欧拉函数值:

const int N = 1e7 + 5;
int phi[N], prime[N / 100];
bool visit[N];
void getphi(int n)
{
	phi[1] = 1;
	for(int i = 2; i <= n; i++)
	{
		if(!visit[i])
		{
			prime[prime[0] + 1] = i;
			prime[0]++;
			phi[i] = i - 1;
		}
		for(int j = 1; j <= prime[0] && i * prime[j] <= n; j++)
		{
			visit[i * prime[j]] = true;
			if(!(i % prime[j]))
			{
				phi[i * prime[j]] = phi[i] * prime[j];
				break;
			}
			else
			{
				phi[i * prime[j]] = phi[i] * (prime[j] - 1);
			}
		}
	}
}

还有OI Wiki上提供的代码:

void pre()
{
	memset(is_prime, 1, sizeof(is_prime));
	int cnt = 0;
	is_prime[1] = 0;
	phi[1] = 1;
	for(int i = 2; i <= 5000000; i++)
	{
		if(is_prime[i])
		{
			prime[++cnt] = i;
			phi[i] = i - 1;
		}
		for(int j = 1; j <= cnt && i * prime[j] <= 5000000; j++)
		{
			is_prime[i * prime[j]] = 0;
			if(i % prime[j])
				phi[i * prime[j]] = phi[i] * phi[prime[j]];
			else
			{
				phi[i * prime[j]] = phi[i] * prime[j];
				break;
			}
		}
	}
}

复杂度均为线性。

欧拉定理

我们先看一下费马小定理。

费马小定理

众所周知,费马小定理是:
a p − 1 ≡ 1 ( m o d p ) , a ⊥ p a^{p-1} \equiv 1 \pmod{p},a \perp p ap11(modp),ap
还有另一种形式,是这样的:
∀ a ∈ N , a p ≡ a ( m o d p ) \forall a \in \mathbb{N} ,a^p \equiv a \pmod{p} aN,apa(modp)

证明

我们首先取一个不为 p p p 倍数的数 a a a
构造一个序列: A = { 1 , 2 , 3 , ⋯   , p − 1 } A = \lbrace 1,2,3, \cdots , p - 1 \rbrace A={1,2,3,,p1} ,这个序列拥有这样的一个性质:
∏ i = 1 n A i ≡ ∏ i = 1 n ( A i × a ) ( m o d p ) \prod_{i=1}^n A_i \equiv \prod_{i=1}^n (A_i \times a) \pmod{p} i=1nAii=1n(Ai×a)(modp)

证明:
∵ ( A i , p ) = 1 , ( A i × a , p ) = 1 \because (A_i,p) = 1 , (A_i \times a,p) = 1 (Ai,p)=1,(Ai×a,p)=1
又因为每一个 A i × a ( m o d p ) A_i \times a \pmod{p} Ai×a(modp) 都是独一无二的,且 A i × a ( m o d p ) < p A_i \times a \pmod{p} < p Ai×a(modp)<p ,得证(每一个 A i × a A_i \times a Ai×a 都对应了一个 A i A_i Ai)。
f = ( p − 1 ) ! f = (p-1)! f=(p1)!,则
f ≡ ( a × A 1 ) ( a × A 2 ) ( a × A 3 ) ⋯ ( a × A p − 1 ) ( m o d p ) a p − 1 ⋅ f ≡ f ( m o d p ) a p − 1 ≡ 1 ( m o d p ) \begin{aligned} f &\equiv (a \times A_1)(a \times A_2)(a \times A_3) \cdots (a \times A_{p-1}) \pmod{p} \\ a^{p-1} · f &\equiv f \pmod{p} \\ a^{p-1} &\equiv 1 \pmod{p} \end{aligned} fap1fap1(a×A1)(a×A2)(a×A3)(a×Ap1)(modp)f(modp)1(modp)
证毕。

或者也可以使用归纳法证明:

显然 1 p ≡ 1 ( m o d p ) 1^p \equiv 1 \pmod{p} 1p1(modp)。那么假设 a p ≡ a ( m o d p ) a^p \equiv a \pmod{p} apa(modp) 成立,那么通过二项式定理有
( a + 1 ) p = a p + C p 1 a p − 1 + C p 2 a p − 2 + ⋯ + C p p − 1 a + 1 (a+1)^p = a^p + C_p^1 a^{p-1} + C_p^2 a^{p-2} + \cdots + C_p^{p-1} a + 1 (a+1)p=ap+Cp1ap1+Cp2ap2++Cpp1a+1
因为 C p k = p ! ( n − k ) ! k ! C_p^k = \dfrac{p!}{(n-k)!k!} Cpk=(nk)!k!p! 对于 k ∈ [ 1 , p − 1 ] k \in [ 1,p-1 ] k[1,p1] 成立,在模 p p p 意义下 C p 1 ≡ C p 2 ≡ ⋯ ≡ C p p − 1 ≡ 0 ( m o d p ) C_p^1 \equiv C_p^2 \equiv \cdots \equiv C_p^{p-1} \equiv 0 \pmod{p} Cp1Cp2Cpp10(modp),那么 ( a + 1 ) p ≡ a p + 1 ( m o d p ) (a+1)^p \equiv a^p + 1 \pmod{p} (a+1)pap+1(modp),将 a p ≡ a ( m o d p ) a^p \equiv a \pmod{p} apa(modp) 代入得 ( a + 1 ) p ≡ a + 1 ( m o d p ) (a+1)^p \equiv a+1 \pmod{p} (a+1)pa+1(modp)
证毕。

欧拉定理

欧拉定理的内容如下:

gcd ⁡ ( a , m ) = 1 \gcd(a,m) = 1 gcd(a,m)=1,则 a φ ( m ) ≡ 1 ( m o d m ) a^{φ(m)} \equiv 1 \pmod{m} aφ(m)1(modm)

证明

欧拉定理的证明过程与费马小定理的证明过程十分相似。
我们同样首先构造一个与 m m m 互质的序列,再进行操作。

r 1 , r 2 , ⋯   , r φ ( m ) r_1,r_2, \cdots ,r_{φ(m)} r1,r2,,rφ(m) 为模 m m m 意义下的一个简化剩余系,则 a r 1 , a r 2 , ⋯   , a r φ ( m ) ar_1,ar_2, \cdots ,ar_{φ(m)} ar1,ar2,,arφ(m) 同样也为模 m m m 意义下的一个简化剩余系。所以, ∏ i = 1 φ ( m ) r i ≡ ∏ i = 1 φ ( m ) a r i ≡ a φ ( m ) ∏ i = 1 φ ( m ) r i ( m o d m ) \prod_{i=1}^{φ(m)} r_i \equiv \prod_{i=1}^{φ(m)} ar_i \equiv a^{φ(m)} \prod_{i=1}^{φ(m)} r_i \pmod{m} i=1φ(m)rii=1φ(m)ariaφ(m)i=1φ(m)ri(modm),约去 ∏ i = 1 φ ( m ) r i \prod_{i=1}^{φ(m)} r_i i=1φ(m)ri 后可得 a φ ( m ) ≡ 1 ( m o d m ) a^{φ(m)} \equiv 1 \pmod{m} aφ(m)1(modm)
证毕。

m = p m=p m=p 时,由于 φ ( m ) = m − 1 φ(m) = m-1 φ(m)=m1,将之代入可得费马小定理。

扩展欧拉定理

扩展欧拉定理是这个样子的:

a b ≡ { a b     m o d     φ ( m ) , gcd ⁡ ( a , m ) = 1 , a b , gcd ⁡ ( a , m ) ≠ 1 , b < φ ( m ) , a ( b     m o d     φ ( m ) ) + φ ( m ) , gcd ⁡ ( a , m ) ≠ 1 , b ≥ φ ( m ) . ( m o d m ) a^b \equiv \begin{cases} a^{b \ \bmod \ φ(m)}, & \gcd(a,m) = 1,\\ a^b, & \gcd(a,m) \neq 1, b < φ(m),\\ a^{(b \ \bmod \ φ(m))+φ(m)}, & \gcd(a,m) \neq 1,b \geq φ(m). \end{cases} \pmod{m} abab mod φ(m),ab,a(b mod φ(m))+φ(m),gcd(a,m)=1,gcd(a,m)=1,b<φ(m),gcd(a,m)=1,bφ(m).(modm)

证明见OI Wiki

莫比乌斯函数

定义

我们把一个数字分解质因数为 n = p 1 c 1 p 2 c 2 ⋯ p k c k n=p_1^{c_1}p_2^{c_2} \cdots p_k^{c_k} n=p1c1p2c2pkck,则
μ ( n ) = { 1 n = 1 0 ∀ i ∈ [ 1 , k ] , c i > 1 ( − 1 ) k ∀ i ∈ [ 1 , k ] , c i = 1 μ(n)= \begin{cases} 1 & n=1 \\ 0 & \forall i \in [1,k] , c_i > 1 \\ (-1)^k & \forall i \in [1,k] , c_i = 1 \end{cases} μ(n)=10(1)kn=1i[1,k],ci>1i[1,k],ci=1

解释一下:

  1. n = 1 n=1 n=1 时, μ ( n ) = 1 μ(n)=1 μ(n)=1
  2. n ≠ 1 n \neq 1 n=1 时:
    1. 当存在 i ∈ [ 1 , k ] i\in [1,k] i[1,k],使得 c i > 1 c_i > 1 ci>1 时, μ ( n ) = 0 μ(n)=0 μ(n)=0,也就是说只要某个质因子出现的次数超过一次, μ ( n ) μ(n) μ(n) 就等于 0 0 0
    2. 当任意 i ∈ [ 1 , k ] i\in[1,k] i[1,k],都有 c i = 1 c_i=1 ci=1 时, μ ( n ) = ( − 1 ) k μ(n)=(-1)^k μ(n)=(1)k,也就是说每个质因子都仅仅只出现过一次时, μ ( n ) μ(n) μ(n) 等于 − 1 -1 1 k k k 次幂,此处 k k k 指的便是仅仅只出现过一次的质因子的总个数。

性质

莫比乌斯函数不仅是积性函数,还有如下性质:
∑ d ∣ m μ ( d ) = [ m = = 1 ] \sum_{d|m} μ(d) = [m==1] dmμ(d)=[m==1]
其中 [ m = = 1 ] [m==1] [m==1] 代表 m==1?1:0

证明


n = ∏ i = 1 k p i c i , n ′ = ∏ i = 1 k p i n=\prod_{i=1}^k{p_i}^{c_i},n'=\prod_{i=1}^k p_i n=i=1kpici,n=i=1kpi
那么
∑ d ∣ n μ ( d ) = ∑ d ∣ n ′ μ ( d ) = ∑ i = 0 k C k i ⋅ ( − 1 ) i = ( 1 + ( − 1 ) ) k \sum_{d\mid n}μ(d)=\sum_{d\mid n'}μ(d)=\sum_{i=0}^k C_k^i·(-1)^i=(1+(-1))^k dnμ(d)=dnμ(d)=i=0kCki(1)i=(1+(1))k

莫比乌斯反演

如果两个的函数 f ( n ) f(n) f(n) g ( n ) g(n) g(n) 满足
f ( n ) = ∑ d ∣ n g ( d ) f(n) = \sum_{d|n} g(d) f(n)=dng(d)

g ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) g(n) = \sum_{d|n} μ(d) f(\frac{n}{d}) g(n)=dnμ(d)f(dn)

证明

摘自《混凝土数学》

充分性

f ( n ) = ∑ d ∣ n g ( d ) = ∑ d ∣ n g ( n d ) \begin{aligned} f(n) &= \sum_{d|n} g (d)\\ &= \sum_{d|n} g (\frac{n}{d}) \end{aligned} f(n)=dng(d)=dng(dn)

∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( d ) ∑ d 1 ∣ n d g ( d 1 ) \sum_{d|n} μ(d) f(\frac{n}{d}) = \sum_{d|n} μ(d) \sum_{d_1|\frac{n}{d}} g(d_1) dnμ(d)f(dn)=dnμ(d)d1dng(d1)

∑ d ∣ n ∑ d 1 ∣ n d μ ( d ) g ( d 1 ) = ∑ d 1 ∣ n g ( d 1 ) ∑ d ∣ n d 1 μ ( d ) = g ( n ) \begin{aligned} \sum_{d|n} \sum_{d_1|\frac{n}{d}} μ(d) g (d_1) &= \sum_{d_1|n} g(d_1) \sum_{d|\frac{n}{d_1}} μ(d) \\ &= g(n) \end{aligned} dnd1dnμ(d)g(d1)=d1ng(d1)dd1nμ(d)=g(n)

考虑到
∑ d ∣ n d 1 μ ( d ) = { 1 d 1 = n 0 d 1 < n \sum_{d|\frac{n}{d_1}} μ(d) = \begin{cases} 1 & d_1 = n \\ 0 & d_1 < n \end{cases} dd1nμ(d)={10d1=nd1<n
因此
g ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( n d ) f ( d ) \begin{aligned} g(n) &= \sum_{d|n} μ(d) f(\frac{n}{d}) \\ &= \sum_{d|n} μ(\frac{n}{d}) f(d) \end{aligned} g(n)=dnμ(d)f(dn)=dnμ(dn)f(d)

必要性

g ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( n d ) f ( d ) \begin{aligned} g(n) &= \sum_{d|n} μ(d) f(\frac{n}{d}) \\ &= \sum_{d|n} μ(\frac{n}{d}) f(d) \end{aligned} g(n)=dnμ(d)f(dn)=dnμ(dn)f(d)

∑ d ∣ n g ( d ) = ∑ d ∣ n g ( n d ) = ∑ d ∣ n ∑ d 1 ∣ n d μ ( n d d 1 ) f ( d 1 ) = ∑ d d 1 ∣ n μ ( n d d 1 ) f ( d 1 ) = ∑ d 1 ∣ n f ( d 1 ) ∑ d ∣ n d μ ( n d d 1 ) = f ( n ) \begin{aligned} \sum_{d|n} g(d) &= \sum_{d|n}g(\frac{n}{d}) \\ &= \sum_{d|n} \sum_{d_1|\frac{n}{d}} μ(\frac{n}{d d_1})f(d_1) \\ &= \sum_{d d_1|n} μ(\frac{n}{d d_1}) f(d_1) \\ &= \sum_{d_1|n} f(d_1) \sum_{d|\frac{n}{d}} μ(\frac{n}{d d_1}) \\ &= f(n) \end{aligned} dng(d)=dng(dn)=dnd1dnμ(dd1n)f(d1)=dd1nμ(dd1n)f(d1)=d1nf(d1)ddnμ(dd1n)=f(n)

考虑到

∑ d ∣ n d 1 μ ( n d d 1 ) = ∑ d ∣ n d 1 μ ( d ) = { 1 d 1 = n 0 d 1 < n \begin{aligned} \sum_{d|\frac{n}{d_1}} μ(\frac{n}{d d_1}) &= \sum_{d|\frac{n}{d_1}} μ(d) \\ &= \begin{cases} 1 & d_1 = n \\ 0 & d_1 < n \end{cases} \end{aligned} dd1nμ(dd1n)=dd1nμ(d)={10d1=nd1<n

因此

f ( n ) = ∑ d ∣ n g ( d ) = ∑ d ∣ n g ( n d ) \begin{aligned} f(n) &= \sum_{d|n} g(d) \\ &= \sum_{d|n} g(\frac{n}{d}) \end{aligned} f(n)=dng(d)=dng(dn)

求莫比乌斯函数的值

单点求值

自己算。

区间筛法

void getMu()
{
	mu[1] = 1;
	for(int i = 2; i <= n; ++i)
	{
		if(!flg[i]) p[++tot] = i, mu[i] = -1;
		for(int j = 1; j <= tot && i * p[j] <= n; ++j)
		{
			flg[i * p[j]] = 1;
			if(i % p[j] == 0)
			{
				mu[i * p[j]] = 0;
				break;
			}
			mu[i * p[j]] = -mu[i];
		}
	}
}

莫比乌斯变换

f ( n ) f(n) f(n) g ( n ) g(n) g(n) 为两个数论函数。
如果有 f ( n ) = ∑ d ∣ n g ( d ) f(n) = \sum_{d|n} g(d) f(n)=dng(d) 那么有:

形式1: g ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) g(n) = \sum_{d|n} μ(d) f(\frac{n}{d}) g(n)=dnμ(d)f(dn)

这种形式下,函数 f ( n ) f(n) f(n) 被称为函数 g ( n ) g(n) g(n) 的莫比乌斯变换,反之则称之为其的莫比乌斯逆变换(反演)。

形式2: g ( n ) = ∑ d ∣ n μ ( d n ) f ( d ) g(n) = \sum_{d|n} μ(\frac{d}{n}) f(d) g(n)=dnμ(nd)f(d)

据说这种形式更常考一点。

证明

  • 方法一:对原式做数论变换。

∑ d ∣ n μ ( d ) f ( n d ) = ∑ d ∣ n μ ( d ) ∑ k ∣ n d g ( k ) = ∑ k ∣ n g ( k ) ∑ d ∣ n k μ ( d ) = g ( n ) \begin{aligned} & \sum_{d\mid n}μ(d)f(\frac{n}{d}) \\ =& \sum_{d\mid n}μ(d)\sum_{k\mid \frac{n}{d}}g(k) \\ =& \sum_{k\mid n}g(k)\sum_{d\mid \frac{n}{k}}μ(d) \\ =& g(n) \end{aligned} ===dnμ(d)f(dn)dnμ(d)kdng(k)kng(k)dknμ(d)g(n)

∑ d ∣ n g ( d ) \displaystyle\sum_{d\mid n}g(d) dng(d) 来替换 f ( n d ) f(\dfrac{n}{d}) f(dn),再变换求和顺序。最后一步变换的依据: ∑ d ∣ n μ ( d ) = [ n = 1 ] \displaystyle\sum_{d\mid n}μ(d)=[n=1] dnμ(d)=[n=1],因此在 n k = 1 \dfrac{n}{k}=1 kn=1 时第二个和式的值才为 1 1 1。此时 n = k n=k n=k,故原式等价于 ∑ k ∣ n [ n = k ] ⋅ g ( k ) = g ( n ) \displaystyle\sum_{k\mid n}[n=k]\cdot g(k)=g(n) kn[n=k]g(k)=g(n)

  • 方法二:运用卷积。

原问题为:已知 f = g ∗ 1 f=g * 1 f=g1,证明 g = f ∗ μ g=f * μ g=fμ

易知如下转化: f ∗ μ = g ∗ 1 ∗ μ    ⟹    f ∗ μ = g f * μ=g * 1 * μ\implies f * μ=g fμ=g1μfμ=g(其中 1 ∗ μ = ε 1 * μ=ε 1μ=ε)。

对于第二种形式:

类似上面的方法一,我们考虑逆推这个式子。

∑ n ∣ d μ ( d n ) f ( d ) = ∑ k = 1 + ∞ μ ( k ) f ( k n ) = ∑ k = 1 + ∞ μ ( k ) ∑ k n ∣ d g ( d ) = ∑ n ∣ d g ( d ) ∑ k ∣ d n μ ( k ) = ∑ n ∣ d g ( d ) ε ( d n ) = g ( n ) \begin{aligned} & \sum_{n|d}{μ(\frac{d}{n})f(d)} \\ =& \sum_{k=1}^{+\infty}{μ(k)f(kn)} \\ =& \sum_{k=1}^{+\infty}{μ(k)\sum_{kn|d}{g(d)}} \\ =& \sum_{n|d}{g(d)\sum_{k|\frac{d}{n}}{μ(k)}} \\ =& \sum_{n|d}{g(d)ε(\frac{d}{n})} \\ =& g(n) \end{aligned} =====ndμ(nd)f(d)k=1+μ(k)f(kn)k=1+μ(k)kndg(d)ndg(d)kndμ(k)ndg(d)ε(nd)g(n)

我们把 d d d 表示为 k n kn kn 的形式,然后把 f f f 的原定义代入式子。

发现枚举 k k k 再枚举 k n kn kn 的倍数可以转换为直接枚举 n n n 的倍数再求出 k k k,发现后面那一块其实就是 ε ε ε, 整个式子只有在 d = n d=n d=n 的时候才能取到值。

参考文献

《混凝土数学》
OI Wiki

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值