积性函数学习笔记

积性函数

定义

积性函数:\(f(x)\) 满足 \(\forall\gcd(a,b)=1,f(ab)=f(a)f(b)\)

若没有 \(\gcd(a,b)=1\) 的性质,则为完全积性函数。

性质

性质1: \(f(x),g(x)\) 是积性函数 \(\implies\) \(f\times g\) 是积性函数,\(f \div g\) 是积性函数

证明略。

性质2: 狄利克雷(Dirichlet)卷积 \(h(n)=f(n) *g(n)=\sum_{d|n}f(d)g(\frac{n}{d})\) 也是积性函数。

证明:\(ab=n\)\(\gcd(a,b)=1\),则我们计算 \(h(n)\):

\[\begin{aligned} h(n)&=h(ab)\\ &= \sum_{d|ab}f(d)g(\frac{ab}{d})\\ &= \sum_{d_1|a,d_2|b}f(d_1d_2)g(\frac{ab}{d_1d_2})\\ &= \sum_{d_1|a}f(d_1)g(\frac{a}d_1{}) \times \sum_{d_2|b}f(d_2)g(\frac{b}{d_2})\\ &= h(a) \times h(b) \end{aligned} \]

性质3: 积性函数由 \(f(p^k)\)\(p\) 为质数)决定。

说明\(n\) 可以表示成 \(p_1^{k_1}p_2^{k_2}\dots p_m^{k_m}\),所以 \(f(n)\) 可以表示成 \(f(p_1^{k_1})f(p_2^{k_2})\dots f(p_m^{k_m})\)

欧拉函数

定义

欧拉函数 \(\varphi(n)\) 是最重要的积性函数之一,它等于 \(1\)\(n\) 中与 \(n\) 互质的数的个数。

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

性质与一些结论

性质1: \(\varphi(n)\) 是积性函数

证明:

不妨设 \(ab=n\)\(\gcd(a,b)=1\)

对于每个数 \(i\),我们将它表示成 \((r_1, r_2)\) 的形式,表示存在 \(x,y\) 满足 \(i =ax+r_1=by+r_2\)

首先我们证明,对于 \(1 \le i \le n\),这个映射是唯一的。

我们将上式变成:\(ax-by=r_2-r_1\)。方便起见,将 \(b\) 取反得 \(ax+by=r_2-r_1\)

这是一个二元一次不定方程,根据裴蜀定理,\(\gcd(a,b)|r_2-r_1\) 则方程有解。

由于 \(a,b\) 互质,说明方程一定有解。

显然,对于方程的一组解 \((x_0,y_0)\) 来说,我们可以用整数 \(t\) 表示方程的通解:

\[\begin{cases} x=x_0+bt\\ y=y_0-at \end{cases} \]

我们将通解代入 \(i\) 得到:\(i=(ax_0+r_1)+abt\),说明满足条件的 \(i\) 是以 \(ab\) 为周期的。

所以 \(1 \sim ab\) 中恰好有一个 \(i\) 对应 \(r_2-r_1\),得证。

接下来我们证明 \(\varphi(n)=\varphi(a)\varphi(b)\)

如果一个数 \(x\)\(n\) 互质,那么它必然和 \(a\)\(b\) 也互质。

这意味这如果 \(x\) 表示为 \((r_1,r_2)\),那么必然有 \(r_1\)\(a\) 互质,\(r_2\)\(b\) 互质。反之同理。

所以所有与 \(n\) 互质的数的个数就等于 \((r_1,r_2)(0 \le r_1 < a, 0 \le r_2 < b)\)\(r_1\)\(a\) 互质,\(r_2\)\(b\) 互质的有序数对的个数。

显然,\(r_1\)\(\varphi(a)\) 种取值,\(r_2\)\(\varphi(b)\) 种取值。

所以一共有 \(\varphi(a)\varphi(b)=\varphi(n)\) 种取值,得证。


计算公式:\(n\) 的质因数分解为 \(\prod_{i=1}^kp_i^{k_i}\),则 \(\varphi(n)=n\prod_{i=1}^k\frac{p_i-1}{p_i}\)

证明:

我们已经证明了 \(\varphi\) 是积性函数,所以我们只要推出 \(\varphi(p^k)\) 就行了。

对于 \(1 \sim p^k\) 来说,只有 \(p\) 的倍数不与 \(p\) 互质。

\(p\) 的倍数共有 \(p^{k-1}\) 个,所以 \(\varphi(p^k)=p^k-p^{k-1}\)

所以 \(\varphi(n)=\prod_{i=1}^k\varphi(p_i^{k_i})=\prod_{i=1}^k(p_i^{k_i}-p_i^{k_i-1})=\prod_{i=1}^kp_i^{k_i-1}(p_i-1)=n\prod_{i=1}^k\frac{p_i-1}{p_i}\)


结论1: \(\sum_{d|n}\varphi(d)=n\)

证明:

重点在于改变枚举对象,我们枚举每个数 \(i\)\(n\) 的最大公因数 \(d\)

我们知道:\(\sum_{d|n}\sum_{i=1}^n[\gcd(i,n)=d]=n\)

这时候我们将 \(d\) 除下去得到:\(\sum_{d|n}\sum_{i=1}^n[\gcd(\frac{i}{d},\frac{n}{d})=1]=n\)

显然后面的式子就等于 \(\varphi(\frac{n}{d})\),所以有:\(\sum_{d|n}\varphi(\frac{n}{d})=n\)

\(d\) 换成 \(\frac{n}{d}\) 即可得到结论。


结论2: 所有小于等于 \(n\) 且与 \(n\) 互素的正整数之和为 \(\frac{n\varphi(n)}{2}\),(\(n \ge 2\)\(n=1\) 时就是 \(1\))。

证明:

观察不难发现,如果 \(\gcd(x,n)=1\),则 \(\gcd(n-x,n)=1(x < n)\)

所以我们可以将这 \(\varphi(n)\) 个数两两配对,每一对和为 \(n\),就能得到这个结论。

线性筛

基础不写了,考虑如何求出积性函数 \(f(n)\)

我们知道,只有在 \(\gcd(a,b)=1\) 时,\(f(n)=f(a)f(b)\)

但是我们存在一种情况,需要用 \(p\)\(x\) 更新 \(px\),而 \(p\)\(x\) 的因子。

所以我们还要记录两个 \(exp(n)\)\(pw(n)\),其中 \(exp(n)\) 表示 \(n\) 最小的因子 \(p\) 的次数,\(pw(n)\) 表示 \(p^{exp(n)}\)

\(p\)\(x\) 互质时,\(exp(px)=1,pw(px)=p,f(px)=f(p)f(x)\)

否则,\(exp(px)=exp(p)+1,pw(px)=pw(p)\times p,f(px)=f(pw(x) \times p) \times f(\frac{x}{pw(x)})\)

这样才能正常的筛。

练习

题目1:\(\sum_{i=1}^n\gcd(i,n)\)\(n < 2^{32}\)P2303 [SDOI2012] Longge 的问题

思路:

我们考虑采取桶的思想,明显会有 \(\gcd(i,n) \le n\),所以我们就有:

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

\(\gcd(i,n)=j\),等价于:\(\gcd(\frac{i}{j},\frac{n}{j})=1\)。由于 \(i \le n\),所以 \(\frac{i}{j} \le \frac{n}{j}\)

所以:

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

所以原式就等于:

\[\sum_{i | n}i \times\varphi(\frac{n}{i}) \]

这个形式就是狄利克雷卷积的形式,所以我们如果记 \(f(n)=\sum_{d|n}d\times\varphi(\frac{n}{d})\),则 \(f(n)=id(n)*\varphi(n)\)

由于 \(id(n)\)\(\varphi(n)\) 都是积性函数,所以 \(f(n)\) 也是积性函数。

根据积性函数的性质,我们只要求出 \(f(p^k)\) 就能求出 \(f(n)\)

\[\begin{aligned} f(p^k)&=\sum_{i=1}^k p^{k-i}\varphi(p^i)+p^n\varphi(1)\\ &= \sum_{i=1}^kp^{k-i}p^{i-1}(p-1)+p^n\\ &= \sum_{i=1}^k p^{k-1}(p-1)+p^n\\ &= k(p-1)p^{k-1}+p^n\\ \end{aligned} \]

这样 \(f(p^{k})\) 就能快速求出了,所以我们就可以求出 \(f(n)\) 了。

一定注意要把 \(\varphi(1)\) 拎出来单独讨论。


题目2: 求出 \(\sum_{i=1}^n\sum_{j=i}^n\gcd(i,j)\)\(n \le 4 \times 10^6+1\)拿行李(极限版) GCD - Extreme (II)

思路:

沿用上题结论,我们要求的就是 \(\sum_{i=1}^nf(i)\),由于 \(f(n)\) 是积性函数,所以我们可以用线性筛在 \(O(n)\) 的时间内将每个 \(f(i)\) 求出来,然后就做完了。


题目3:\(\sum_{i=1}^n \operatorname{lcm}(i,n)\)。(P1891 疯狂 LCM

思路:

\[\begin{aligned} \sum_{i=1}^n\operatorname{lcm}(i,n) &= \sum_{i=1}^n\frac{n \times i}{\gcd(i,n)} \\ &= n\sum_{i=1}^n\frac{i}{\gcd(i,n)}\\ &= n \sum_{d|n}\sum_{i=1}^n\frac{i}{d}[\gcd(i,n)=d]\\ &= n \sum_{d|n}\sum_{i=1}^n\frac{i}{d}[\gcd(\frac{i}{d},\frac{n}{d})=1] \end{aligned} \]

我们把 \(\frac{i}{d}\) 换成 \(i\) 就可以得到,再把 \(\frac{n}{d}\) 换成 \(d\) 得到:

\[\begin{aligned} n \sum_{d|n}\sum_{i=1}^n\frac{i}{d}[\gcd(\frac{i}{d},\frac{n}{d})=1] &= n \sum_{d|n}\sum_{i=1}^{\frac{n}{d}}i[\gcd(i,\frac{n}{d})=1]\\ &= n \sum_{d|n}\sum_{i=1}^di[\gcd(i,d)=1] \end{aligned} \]

\(\sum_{i=1}^di[\gcd(i,d)=1]\) 是所有小于等于 \(d\) 且与其互质的数之和。

然后这就是我们之前的结论,这个式子就等于 \(\frac{d\varphi(d)}{2}\),除了 \(d=1\) 时是 \(1\)

所以式子变为:

\[\frac{n}{2}\sum_{d|n}d \times\varphi(d) \]

我们记 \(f(n)=\sum_{d|n}d \times \varphi(d)\),这个函数虽然不是狄利克雷卷积,但我们可以证明它也是积性函数。

证明类似狄利克雷卷积,这里略过。

于是我们依然可以用 \(f(p^k)\) 来求出 \(f(n)\),然后就做完了。

题目4: 求有多少数对 \((x,y)\) 满足 \(1 \le x,y \le n,\gcd(x,y)=\text{质数}(n \le 10^7)\)。(P2568 GCD

思路:

\(\mathbb{P}\) 为质数集合,答案即为:

\[\sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=p](p \in \mathbb{P}) \]

我们先考虑后一段:

\[\begin{aligned} \sum_{y=1}^x[\gcd(x,y)=p]&=\sum_{p|x,p \in\mathbb{P}}\sum_{y=1}^x[\gcd(x,y)=p]\\ &= \sum_{p|x,p \in\mathbb{P}}\sum_{y=1}^x[\gcd(\frac{x}{p},\frac{y}{p})=1]\\ &=\sum_{p|x,p \in\mathbb{P}}\varphi(\frac{x}{p}) \end{aligned} \]

所以答案就是:

\[\begin{aligned} \sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=p]&=\sum_{x=1}^n\sum_{p|x,p \in\mathbb{P}}\varphi(\frac{x}{p})\\ &= \sum_{p \in \mathbb{P}}\sum_{k=1}^{pk \le n}\varphi(k) \end{aligned} \]

所以我们对 \(\varphi\) 做一个前缀和,再枚举所有素数即可。

posted @ 2024-01-20 13:43  rlc202204  阅读(17)  评论(0编辑  收藏  举报