
本文共 3091 字,大约阅读时间需要 10 分钟。
莫比乌斯函数
对于 n ≥ 0 n \geq 0 n≥0,设数 n n n的唯一分解式为 P 1 ρ 1 P 2 ρ 2 . . . P n ρ n P_1^{\rho_1}P_2^{\rho_2}...P_n^{\rho_n} P1ρ1P2ρ2...Pnρn
μ ( n ) = { 1 n = 1 ( − 1 ) s ρ 1 = ρ 2 = . . . = ρ s = 1 0 ∃ ρ i ≥ 2 \mu(n) = \left\{\begin{array}{rcl} 1 && n=1 \\ (-1)^s && \rho_1=\rho_2=...=\rho_s=1 \\ 0 && \exists \rho_i \geq 2 \end{array}\right. μ(n)=⎩⎨⎧1(−1)s0n=1ρ1=ρ2=...=ρs=1∃ρi≥2
通俗地讲,莫比乌斯函数就是:
-
μ ( 1 ) = 1 \mu(1)=1 μ(1)=1
-
若 n n n存在平方因子, μ ( n ) = 0 \mu(n)=0 μ(n)=0
-
若 n n n是奇数个不同素数之积, μ ( n ) = − 1 \mu(n)=-1 μ(n)=−1
-
若 n n n是偶数个不同素数之积, μ ( n ) = 1 \mu(n)=1 μ(n)=1
性质
-
性质一:莫比乌斯函数是积性函数。若 g c d ( n , m ) = 1 gcd(n,m)=1 gcd(n,m)=1,则 μ ( n m ) = μ ( n ) μ ( m ) \mu(nm)=\mu(n)\mu(m) μ(nm)=μ(n)μ(m)
证明:对 n , m n,m n,m唯一分解然后分类讨论即可
-
性质二:设 n ≥ 1 n \geq 1 n≥1, d ∣ n d | n d∣n( d d d是 n n n的因子)
∑ d ∣ n μ ( d ) = [ 1 n ] = { 1 n = 1 0 n ≥ 2 \sum_{d|n}\mu(d) = [\frac{1}{n}] = \left\{\begin{array}{rcl} 1 && n=1 \\ 0 && n \geq 2 \end{array}\right. ∑d∣nμ(d)=[n1]={ 10n=1n≥2
证明: n = 1 n=1 n=1时显然满足;设 n ≥ 2 n \geq 2 n≥2,数 n n n的唯一分解式为 P 1 ρ 1 P 2 ρ 2 . . . P s ρ s P_1^{\rho_1}P_2^{\rho_2}...P_s^{\rho_s} P1ρ1P2ρ2...Psρs, d d d的唯一分解式为 P 1 α 1 P 2 α 2 . . . P s α s P_1^{\alpha_1}P_2^{\alpha_2}...P_s^{\alpha_s} P1α1P2α2...Psαs。根据莫比乌斯函数的定义和积性函数的性质可以得出:
∑ d ∣ n μ ( d ) = ∑ α 1 = 1 0 ∑ α 2 = 1 0 . . . ∑ α s = 1 0 μ ( P 1 α 1 P 2 α 2 . . . P s α s ) = ∑ 1 0 μ ( P 1 α 1 ) ∑ 1 0 μ ( P 2 α 2 ) . . . ∑ 1 0 μ ( P s α s ) \sum_{d|n}\mu(d) = \sum_{\alpha_1=1}^0\sum_{\alpha_2=1}^0...\sum_{\alpha_s=1}^0 \mu(P_1^{\alpha_1}P_2^{\alpha_2}...P_s^{\alpha_s}) \\ ~~~~~~~~~~~~~~~~~=\sum_1^0\mu(P_1^{\alpha_1})\sum_1^0\mu(P_2^{\alpha_2})...\sum_1^0\mu(P_s^{\alpha_s}) ∑d∣nμ(d)=∑α1=10∑α2=10...∑αs=10μ(P1α1P2α2...Psαs) =∑10μ(P1α1)∑10μ(P2α2)...∑10μ(Psαs)
对于某一项 ∑ 1 0 μ ( P t α t ) = 1 + ( − 1 ) = 0 \sum_1^0\mu(P_t^{\alpha_t})=1 + (-1) = 0 ∑10μ(Ptαt)=1+(−1)=0,那么所有项乘起来仍为 0 0 0,原式得证。
-
性质三: ∑ d ∣ n μ ( d ) d = φ ( n ) n \sum_{d|n}\frac{\mu(d)}{d}= \frac{\varphi(n)}{n} ∑d∣ndμ(d)=nφ(n)
证明参见莫比乌斯反演关于 φ ( n ) = ∑ d ∣ n μ ( d ) n d \varphi(n) = \sum_{d|n}\mu(d)\frac{n}{d} φ(n)=∑d∣nμ(d)dn的证明
求莫比乌斯函数
求单个数
int getMu(int n) { if (n == 1) return 1; int m = sqrt(n + 0.5), cnt = 0; for (int i = 2; i <= m; i++) { if (n % i == 0) { if (n % (i * i) == 0) return 0; n /= i; cnt++; } } if (n > 1) cnt++; return cnt & 1 ? -1 : 1;}
线性筛选
若 i % p r i m e [ j ] ! = 0 i\%prime[j]!=0 i%prime[j]!=0,代表 i i i中不含该质因子,也就是说乘上该质因子后恰好会多出一个系数为 1 1 1质因子,因此 μ ( i ∗ p r i m e [ j ] ) = − μ ( i ) \mu(i*prime[j])= - \mu(i) μ(i∗prime[j])=−μ(i);
否则代表含有该质因子且系数会大于等于 2 2 2,那么 μ ( i ∗ p r i m e [ j ] ) = 0 \mu(i*prime[j])=0 μ(i∗prime[j])=0
bool isprime[maxn];int mu[maxn], prime[maxn];void initMu() { mu[1] = 1; int cnt = 0; for (int i = 2; i < maxn; i++) { if (!isprime[i]) prime[cnt++] = i, mu[i] = -1; for (int j = 0; j < cnt && i * prime[j] < maxn; j++) { isprime[i * prime[j]] = 1; if (i % prime[j]) mu[i * prime[j]] = -mu[i]; else { mu[i * prime[j]] = 0; break; } } }}
发表评论
最新留言
关于作者
