Content:数论
Date:2025.7.30

课堂内容

莫比乌斯函数

定义如下:

μ(n)={1n=1(1)kn=p1p2p3pk,piP0otherwise\mu(n) = \begin{cases} 1 & n=1 \\ (-1)^k & n = p_1 p_2 p_3 \dots p_k, \forall p_i \in P \\ 0 & otherwise \\ \end{cases}

其中莫比乌斯函数有如下性质:

dnμ(d)=[n=1]\sum_{d|n} \mu(d) = [n=1]

欧拉函数

定义如下:

φ(n)=i=1n[gcd(n,i)=1]\varphi(n) = \sum_{i=1}^n [gcd(n,i)=1]

其中欧拉函数具有如下性质:

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

莫比乌斯反演

对于任意两个数论函数 f(n)f(n)g(n)g(n),有如下推导:

f(n)=dng(d)g(n)=dnμ(d)f(nd)f(n) = \sum_{d|n} g(d) \Leftrightarrow g(n) = \sum_{d|n} \mu(d) f(\frac{n}{d})

例题

Luogu-P2257 YY的GCD

题意

给定 nnmm,求:

i=1nj=1m[gcd(i,j)Prime]\sum_{i=1}^n \sum_{j=1}^m [gcd(i,j) \in Prime]

思路

课上没怎么听懂,自己推了下竟然推出来了。

我们看到 [gcd(i,j)Prime][gcd(i,j) \in Prime],考虑从质数入手,可以枚举质数,这样式子化为:

i=1nj=1mpPrime[gcd(ip,jp)=1]\sum_{i=1}^n \sum_{j=1}^m \sum_{p \in Prime} [gcd(\frac{i}{p},\frac{j}{p})=1]

把质数枚举提到前面去,得到:

pPrimei=1nj=1m[gcd(ip,jp)=1]=pPrimei=1npj=1mp[gcd(i,j)=1]\begin{aligned} & \sum_{p \in Prime} \sum_{i=1}^n \sum_{j=1}^m [gcd(\frac{i}{p}, \frac{j}{p}) = 1] \\ =& \sum_{p \in Prime} \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{p} \rfloor} [gcd(i,j) = 1] \end{aligned}

对于后面一个埃德森括号,发现可以使用莫比乌斯函数的 dnμ(d)=[n=1]\displaystyle \sum_{d|n} \mu(d) = [n = 1] 这个性质,于是式子化为(这里钦定 n<mn < m):

pPrimei=1npj=1mpdgcd(i,j)μ(d)=pPrimed=1nμ(d)npdmpd\begin{aligned} & \sum_{p \in Prime} \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{p} \rfloor} \sum_{d | gcd(i,j)} \mu(d) \\ =& \sum_{p \in Prime} \sum_{d=1}^{n} \mu(d) \lfloor \frac{n}{pd} \rfloor \lfloor \frac{m}{pd} \rfloor \end{aligned}

pd=tpd = t,则:

pPrimed=1nμ(d)ntmt\begin{aligned} & \sum_{p \in Prime} \sum_{d=1}^n \mu(d) \lfloor \frac{n}{t} \rfloor \lfloor \frac{m}{t} \rfloor \\ \end{aligned}

这时候这个和式就可以划分为两个互相独立的部分,所以:

t=1nntmtpt,pPrimeμ(tp)\begin{aligned} & \sum_{t=1}^n \lfloor \frac{n}{t} \rfloor \lfloor \frac{m}{t} \rfloor \sum_{p | t, p \in Prime} \mu(\frac{t}{p}) \end{aligned}

前面一个和式可以整除分块,后面的可以前缀和,这样我们就做完啦~~~

提交记录:link

Luogu-P3455 ZAP-Queries

题目大意

给定 aabbdd,求:

i=1aj=1b[gcd(i,j)=d]\sum_{i=1}^{a} \sum_{j=1}^b [gcd(i,j) = d]

思路

对于给定的式子,我们和第一题一样做如下变换:

n=ad,m=bdn = \frac{a}{d}, m = \frac{b}{d},则

i=1nj=1m[gcd(i,j)=1]=i=1nj=1mkgcd(i,j)μ(k)=k=1ni=1nkj=1mkμ(k)=k=1nμ(k)nkmk\begin{aligned} & \sum_{i=1}^n \sum_{j=1}^m [gcd(i,j) = 1] \\ =& \sum_{i=1}^n \sum_{j=1}^m \sum_{k | gcd(i,j)} \mu(k) \\ =& \sum_{k=1}^n \sum_{i=1}^{\lfloor \frac{n}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{k} \rfloor} \mu(k) \\ =& \sum_{k=1}^n \mu(k) \lfloor \frac{n}{k} \rfloor \lfloor \frac{m}{k} \rfloor \end{aligned}

所以又变回了第一题的整除分块加前缀和了。

提交记录:link

Luogu-P3327 约数个数和

题目大意

已知函数 d(n)d(n) 表示整数 nn 的约数个数,给定 n,mn,m 求:

i=1nj=1md(ij)\sum_{i=1}^n \sum_{j=1}^m d(ij)

思路

对于函数 d(n)d(n),可以发现这是一个积性函数,但是不是一个完全积性函数,所以不能把 d(ij)d(ij) 拆成 d(i)×d(j)d(i) \times d(j)

但是对于这个形式的函数 d(n)d(n),我们可以根据定义发现另一个更优秀的性质:

d(ij)=xiyj[gcd(x,y)=1]d(ij) = \sum_{x|i} \sum_{y|j} [gcd(x,y) = 1]

通过枚举原来的 i,ji,j,加上容斥,我们就可以把 d(ij)d(ij) 写开来,这样有利于后面的变换。

i=1nj=1md(ij)=i=1nj=1mxiyj[gcd(x,y)=1]=i=1nj=1mxiyjdgcd(x,y)μ(d)=x=1ny=1mnxmydgcd(x,y)μ(d)=d=1nμ(d)x=1ndy=1mdnxmy=d=1nμ(d)(x=1ndnxd)(y=1mdmyd)\begin{aligned} & \sum_{i=1}^n \sum_{j=1}^m d(ij) \\ =& \sum_{i=1}^n \sum_{j=1}^m \sum_{x|i} \sum_{y|j} [gcd(x,y) = 1] \\ =& \sum_{i=1}^n \sum_{j=1}^m \sum_{x|i} \sum_{y|j} \sum_{d|gcd(x,y)} \mu(d) \\ =& \sum_{x=1}^n \sum_{y=1}^m \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \sum_{d|gcd(x,y)} \mu(d) \\ =& \sum_{d=1}^n \mu(d) \sum_{x=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{y=1}^{\lfloor \frac{m}{d} \rfloor} \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \\ =& \sum_{d=1}^n \mu(d) (\sum_{x=1}^{\lfloor \frac{n}{d} \rfloor} \lfloor \frac{n}{xd} \rfloor) (\sum_{y=1}^{\lfloor \frac{m}{d} \rfloor} \lfloor \frac{m}{yd} \rfloor ) \end{aligned}

f(x)=i=1nnif(x) = \displaystyle \sum_{i=1}^n \lfloor \frac{n}{i} \rfloor,则原式可以表达为:

d=1nμ(d)f(nd)f(md)\begin{aligned} \sum_{d=1}^n \mu(d) f(\lfloor \frac{n}{d} \rfloor) f(\lfloor \frac{m}{d} \rfloor) \end{aligned}

对于 μ(d),f(n)\mu(d), f(n) 均可以预处理得到,剩下的就是整除分块了。

提交记录:link