首页 > 其他分享 >Number Theory(4)

Number Theory(4)

时间:2024-05-21 13:22:42浏览次数:22  
标签:lf frac Theory sum Number rf prod gcd

11 莫比乌斯函数

尝试按照《具体数学》的顺序引入莫比乌斯反演。


11.1 引入

莫比乌斯函数 \(\mu(m)\) 是根据 19 世纪的数学家奥古斯特·莫比乌斯命名的,他还发现了著名的莫比乌斯带,\(\mu(m)\) 对所有整数 \(m \ge 1\) 由等式

\[\sum_{d \mid m} \mu(d) = [m=1] \]

来定义。

这个式子实际上是一个递归式,左边的 \(\mu(m)\) 和某些满足 \(d \lt m\) 的 \(\mu(d)\) 的值组成的和式。我们有相继带入前面 \(m\),从而得到前面的值:\(1,-1,-1,0,-1,1,-1,0,0,1,-1,0,\cdots\)。

在 1857 年,Richard Dedekind 和 Joseph Liouville 注意到了如下重要的 “反演原理”。

\[g(m) = \sum_{d \mid m} f(d) \Longleftrightarrow f(m) = \sum_{d \mid m} \mu(d) g(\frac m d) \]

这就是我们熟知的 莫比乌斯反演


发现这个东西的证明是容易的:如果 \(g(m) = \sum_{d \mid m} f(d)\),那么

\[\begin{aligned} \sum_{d \mid m} \mu(d) g(\frac m d) & = \sum_{d \mid m} \mu (\frac m d) g(d) \\ & = \sum_{d \mid m} \mu(\frac m d) \sum_{k \mid d} f(k) \\ & = \sum_{k \mid m} \sum_{d \mid \frac m k} \mu(\frac m {kd}) f(k) \\ & = \sum_{k \mid m} \sum_{d \mid \frac m k} \mu(d) f(k) \\ & = \sum_{k \mid m} \left[ \frac m k =1 \right] f(k) \\ & = f(m) \end{aligned} \]

反之,如果 \(f(m) = \sum_{d \mid m} \mu(d) g(\frac m d)\),则

\[\begin{aligned} \sum_{d \mid m} f(d) & = \sum_{d \mid m} \sum_{k \mid d} \mu(k) g(\frac d k) \\ & = \sum_{d \mid m} \sum_{k \mid d} \mu(\frac d k) g(k) \\ & = \sum_{k \mid m} \sum_{d \mid {\frac m k}} \mu(d) g(k) \\ & = \sum_{k \mid m} \left[ \frac m k =1 \right] g(k) \\ & = g(m) \end{aligned} \]

于是我们在这里就证明了 莫比乌斯反演

而莫比乌斯反演还可以被表示成

\[g = f * 1 \Longleftrightarrow f = g * \mu \]


现在回到最开始的那个式子,发现其实就是 \(\mu * 1 = \epsilon\),由于我们之前证明的 积性函数的逆元也是积性函数,可以知道 \(\mu\) 必是积性函数。这样一来,只要我们计算出 \(\mu(p^k)\) 就能算出 \(\mu(m)\)。

当 \(m = p^k\) 时,根据最初的式子,我们知道对于所有 \(k \ge 1\),都有

\[\mu(1) + \mu(p) + \mu(p^2) + \cdots + \mu(p^k) =0 \]

由此推出

\[\mu(p) = -1 ; \quad \mu(p^k) =0,k \gt 1 \]

于是,我们就推出了 \(\mu\) 的定义式

\[\mu(m) = \begin{cases} 1 & m=1 \\ 0 & m 含有平方因子 \\ (-1)^k & k 为 m 的本质不同质因子个数,即 \omega (m) \end{cases} \]


如果我们把之前的欧拉反演视作 \(\varphi (m)\) 的递归式,就能应用莫比乌斯反演得到

\[\varphi (m) = \sum_{d \mid m} \mu(d) \frac m d \]

也就是 \(\mu * \text{id} = \varphi\),也对狄利克雷卷积逆元有了另一个方面的解释。


接下来我们尝试用容斥的角度来理解莫比乌斯函数。

设 \(g(n) = \sum_{n \mid d} f(d)\),即 \(g(n)\) 是 \(f\) 在所有 \(n\) 的倍数处的取值和。现在已知 \(g\),要求 \(f(1)\)。则 \(f(1)\) 等于 \(f\) 在 \(1\) 的倍数处的取值和,减去在质数处的取值和,但是多减去了在两个不同质数乘积处的取值和,一次要加上这些值,但是多加了在三个不同质数乘积处的取值和,以此类推。因此,若 \(n\) 为 \(k\) 个不同质数的乘积,则 \(f(1)\) 会收到 \(g(n)\) 系数为 \((-1)^k\) 的贡献,如下图。

image

就是对 \(\mathbb N\) 作容斥,得到贡献系数 \(\mu\)。


11.2 线性筛莫比乌斯函数

根据定义是,线性筛莫比乌斯函数是非常容易的。

  mu[1]=1;
  for(int i=2;i<=maxn;i++){
  	if(!vis[i]) p[++cnt]=i,mu[i]=-1;
  	for(int j=1;j<=cnt&&i*p[j]<=maxn;j++){
  	  vis[i*p[j]]=true;
	  if(i%p[j]==0) break;
	  mu[i*p[j]]=-mu[i];	
	}
  }

11.3 常见技巧

对于 莫比乌斯反演,我们常常用式子

\[[\gcd(i,j) = 1] = \sum_{d \mid \gcd(i,j)} \mu(d) \]

它把 \(\gcd(i,j)\) 带入了 \(n\),还将 \(i,j\) 互质的条件转化为枚举 \(\gcd(i,j)\) 的约数 \(d\),然后对 \(\mu(d)\) 求和。在 \(i,j\) 同样需要枚举的时候,可以先枚举 \(d\) 并计算合法的 \((i,j)\) 对数,这样 \(i,j\) 合法当且仅当 \(d \mid i,d \mid j\),就把 \(i,j\) 独立开了。

于是我们就可以这样解决下面的式子:

\[\begin{aligned} \sum_{i=1}^n \sum_{j=1}^m \left[ \gcd(i,j) =1 \right] & = \sum_{i=1}^n \sum_{j=1}^m \sum_{d \mid \gcd(i,j)} \mu(d) \\ & = \sum_{d =1}^{\min(n,m)} \mu(d) \sum_{i=1}^n \sum_{j=1}^m \left[ d \mid i \land d \mid j \right] \\ & = \sum_{d=1}^{min(n,m)} \mu(d) \left \lfloor \frac n d \right \rfloor \left \lfloor \frac m d \right \rfloor \end{aligned} \]

相当于对最大公约数为 \(d\) 的倍数进行了容斥:加上最大公约数为 \(1\) 的倍数的对数,减去最大公约数为 \(p_i\) 的倍数的对数,加上最大公约数为 \(p_ip_j(i \neq j)\) 的倍数的对数,以此类推。得到每个 \(d\) 的贡献系数就是莫比乌斯函数。

而这个式子是非常容易用整除分块完成。


$$ d(ij) = \sum_{x \mid i} \sum_{y \mid j} \left [ x \bot y \right] $$ 考虑单个质因子 $p$,再用中国剩余定理和并。设 $a = v_p(i)$ 即 $i$ 中含有质因子 $p$ 的数量,$b = v_p(j)$,则 $v_p(ij)= a+b$。对于 $ij$ 的约数 $d$,若 $v_p(d) \le a$,则令其对应 $v_p(x) = v_p(d),v_p(y)=0$,即所有都算在 $x$ 上面;若 $v_p(d) \gt a$,则令其对应 $v_p(x)=0,v_p(y) = v_p(d) -a$。容易发现这样会形成双射,因此可证得这一结论。

11.4 例题

接下来,我们来将一些例题,由于比较多,所以单独提出来了。部分例题会用到上面的常见技巧。

前面的一些例题中有些写得比较简略,有些可能是

标签:lf,frac,Theory,sum,Number,rf,prod,gcd
From: https://www.cnblogs.com/H-W-Y/p/18203764/NumberTheory4

相关文章

  • Number Theory(5)
    12奇妙筛法已开工。12.1杜教筛12.2Min-25筛Min_25筛可以在\(\mathcalO\left(\frac{n^{\frac34}}{\logn}\right)\)的时间复杂度内解决一类积性函数前缀和问题。说形象点就是\(1s\)能跑\(10^{10}\),相当优秀。要求:\(f(p)\)是关于\(p\)的低阶多项式,......
  • Number Theory(1)
    2024040前言离散数学是本书的重点,而整数又是离散数学的中心议题。数论是讨论整数性质的重要数学分支,因此我们要来探索它。​ ——《具体数学》第四章标有*的为拓展内容,或者说比较难的题目,但它们都非常有趣。部分题目的代......
  • lodash已死?radash库方法介绍及源码解析 —— 函数柯里化 + Number篇
    写在前面tips:点赞+收藏=学会!主页有更多其他篇章的方法,欢迎访问查看。本篇我们继续介绍radash中函数柯里化和Number相关的方法使用和源码解析。函数柯里化chain:创建一个函数链并依次执行使用说明功能描述:用于创建一个函数链,该链依次执行一系列函数,每个函数的输出......
  • LeetCode 1353. Maximum Number of Events That Can Be Attended
    原题链接在这里:https://leetcode.com/problems/maximum-number-of-events-that-can-be-attended/description/题目:Youaregivenanarrayof events where events[i]=[startDayi,endDayi].Everyevent i startsat startDayi andendsat endDayi.Youcanattend......
  • 【jmeter】.SampleException: Mismatch between expected number of columns: 生成报
    1、问题现象Causedby:org.apache.jmeter.report.core.SampleException:Consumerfailedwithmessage:Consumerfailedwithmessage:Mismatchbetweenexpectednumberofcolumns:17andcolumnsinCSVfile:3,checkyourjmeter.save.saveservice.*configurationor......
  • LeetCode 2595. Number of Even and Odd Bits
    原题链接在这里:https://leetcode.com/problems/number-of-even-and-odd-bits/description/题目:Youaregivena positive integer n.Let even denotethenumberofevenindicesinthebinaryrepresentationof n (0-indexed)withvalue 1.Let odd denotethen......
  • 264 ugly number II 丑数
    问题描述Anuglynumberisapositiveintegerwhoseprimefactorsarelimitedto2,3,and5.Givenanintegern,returnthenth*uglynumber*.解释:一个丑数是一个正整数,其公因子只有2,3,5。给定数字n,求第n个丑数案例:Input:n=10Output:12Explanation:[1,2,......
  • LeetCode 1915. Number of Wonderful Substrings
    原题链接在这里:https://leetcode.com/problems/number-of-wonderful-substrings/description/题目:A wonderful stringisastringwhere atmostone letterappearsan odd numberoftimes.Forexample, "ccjjc" and "abab" arewonderful,but "ab&......
  • skipped: maximum number of running instances reached (1)
    Python的 apscheduler今天出现skipped:maximumnumberofrunninginstancesreached(1)问题产生的原因:设置了大量的任务,而APScheduler无法同时处理所有任务解决方法:调整APScheduler使用的线程池大小来增加并发处理任务的能力fromapscheduler.schedulers......
  • MySQL ROW_NUMBER 函数
    MySQLROW_NUMBER()语法MySQL ROW_NUMBER()从8.0版开始引入了功能。这ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应用的每一行分配一个序号。请注意,如果你使用MySQL版本低于8.0,你可以效仿的一些功能ROW_NUMBER()函数使用各种技术。以下显示了ROW_NUMBER()函数的语法:......