一. 质数

概念

  • φ(n)\varphi(n):1∼n1\sim n 中与 nn 互质的数的个数。

  • 如果当 a,ba, b 互质时,有 f(a×b)=f(a)×(b)f(a\times b)=f(a)\times (b)。那么称函数 ff 为积性函数。若 ff 是积性函数,且在算术基本定理中 n=∏i=1mpicin=\prod_{i=1}^{m}p_{i}^{c_{i}},则显然 f(n)=∏i=1mf(pici)f(n)=\prod_{i=1}^{m}f\left(p_{i}^{c_{i}}\right)。

性质

  • 1∼n1\sim n 中质数的个数:约 nln⁡n\dfrac{n}{\ln n}。

  • 欧拉函数

    1. ∀n>1,1∼n\forall n>1,1 \sim n 中与 nn 互质的数的和为 n2×φ(n)\dfrac{n}{2}\times\varphi(n)。

      证明:因为 gcd⁡(n,x)=gcd(n,n−x)\gcd(n,x)=gcd(n,n-x),所以 1∼n1\sim n 中与 nn 互质的数总是成对出现,平均值为 n2\dfrac{n}{2},总和为 n2×φ(n)\dfrac{n}{2}\times\varphi(n)。

    2. 若 a,ba, b 互质, 则 φ(a×b)=φ(a)×φ(b)\varphi(a\times b)=\varphi(a)\times\varphi(b)。

      证明:根据下文欧拉函数单点计算公式直接得出。

    3. 设 pp 为质数,若 p∣np \mid n 且 p2∣np^{2} \mid n,则 φ(n)=φ(np)×p\varphi(n)=\varphi(\dfrac{n}{p})\times p.

      证明:由条件得 nn 与 np\dfrac{n}{p} 质因子种类相同,只是指数不同,将 φ(n)\varphi(n) 和 φ(np)\varphi(\dfrac{n}{p}) 根据下文单点计算公式拆分发现他们的商为 pp。

    4. 设 pp 为质数,若 p∣np \mid n 但 p2∤np^{2} \nmid n,则 φ(n)=φ(np)×(p−1)\varphi(n)=\varphi(\dfrac{n}{p})\times(p-1)。

      证明:由条件得 pp 与 np\dfrac{n}{p} 互质,由性质 2 可得 φ(n)=φ(np)×φ(p)=φ(np)×(p−1)\varphi(n)=\varphi(\dfrac{n}{p})\times\varphi(p)=\varphi(\dfrac{n}{p})\times(p-1)。

    5. ∑d∣nφ(d)=n\sum_{d\mid n}\varphi(d)=n。

      证明:设 n,mn,m 互质,n=p1c1p2c2⋯n=p_1^{c_1}p_2^{c_2}\cdots,m=p1′ c1′p2′ c2′⋯m=p_1'^{~c_1'}p_2'^{~c_2'}\cdots。

      ∑d∣nmφ(d)=∑i=0c1∑j=0c2⋯∑k=0c1′∑l=0c2′⋯φ(p1ip2j⋯p1′ kp2′ l⋯ )=∑i=0c1∑j=0c2⋯φ(p1ip2j⋯ )∑k=0c1′∑l=0c2′⋯φ(p1′ kp2′ l⋯ )=∑f∣nφ(f)∑g∣mφ(g)\begin{gather} \sum_{d\mid nm}\varphi(d)=\sum\limits_{i=0}^{c_1}\sum\limits_{j=0}^{c_2}\cdots\sum\limits_{k=0}^{c_1'}\sum\limits_{l=0}^{c_2'}\cdots\varphi(p_1^ip_2^j\cdots p_1'^{~k}p_2'^{~l}\cdots)\\ =\sum\limits_{i=0}^{c_1}\sum\limits_{j=0}^{c_2}\cdots\varphi(p_1^ip_2^j\cdots)\sum\limits_{k=0}^{c_1'}\sum\limits_{l=0}^{c_2'}\cdots\varphi(p_1'^{~k}p_2'^{~l}\cdots)\\ =\sum_{f\mid n}\varphi(f)\sum_{g\mid m}\varphi(g)\\ \end{gather}

      所以 ∑d∣nφ(d)\sum_{d\mid n}\varphi(d) 是积性函数。

      设 nn 的质因子种类共 kk 种。

      ∑d∣nφ(d)=∏i=1i≤k∑f∣piciφ(f)=∏i=1i≤k∑j=0j≤ciφ(pij)由等比数列求和公式可得∑j=0j≤ciφ(pij)=pici=∏i=1i≤kpici=n\begin{gather} \sum_{d\mid n}\varphi(d)=\prod_{i=1}^{i\le k}\sum_{f\mid p_i^{c_i}}\varphi(f)\\ =\prod_{i=1}^{i\le k}\sum_{j=0}^{j\le c_i}\varphi(p_i^j)\\ \text{由等比数列求和公式可得}\sum_{j=0}^{j\le c_i}\varphi(p_i^j)=p_i^{c_i}\\ =\prod_{i=1}^{i\le k}p_i^{c_i}\\ =n\\ \end{gather}

公式

  • 单点计算公式:φ(n)=n×p1−1p1×p2−1p2×⋯×pm−1pm=n×∏质数p∣n(1−1p)\varphi(n)=n \times \dfrac{p_{1}-1}{p_{1}} \times \dfrac{p_{2}-1}{p_{2}} \times \cdots \times \dfrac{p_{m}-1}{p_{m}}=n \times \prod_{\text{质数} p \mid n}\left(1-\dfrac{1}{p}\right)。

    感性理解:对于 nn 的每个质因子 pp 来说,1∼n1\sim n 中有这个质因子的数在所有数中的比例为 1p\dfrac{1}{p},这部分肯定无法与 nn 互质,剩下 p−1p\dfrac{p-1}{p} 可能与 nn 互质,这是考虑一个质因子的情况。考虑所有质因子的情况就是 ∏质数p∣n(1−1p)\prod_{\text{质数}p\mid n}\left(1-\dfrac{1}{p}\right),再乘上 1∼n1\sim n 中整数个数。

  • 递推式:φ(p×i)=φ(i)×{p(p∣i)p−1(p∤i)\varphi(p\times i)=\varphi(i)\times\begin{cases}p&(p\mid i)\\p-1&(p\nmid i)\end{cases}。

    由性质 3、4 可得。

代码

  • 单点质数筛

    • 试除法
  • 区间质数筛

    • 埃氏筛

    • 线性筛

  • 自由区间质数筛

    • 双筛法(筛小素数再筛区间素数)
  • 单点质因数分解

    • 试除法
  • 单点欧拉函数——质因数分解(求值公式)

  • 区间欧拉函数——线性法(积性性质)

  • 自由区间欧拉函数——双筛法(求值公式)

二. 约数

性质

  • nn 的约数个数上界:2n2\sqrt{n}。

    试除法的推论。

  • 1∼n1\sim n 每个数约数个数的总和:约 nlog⁡nn\log n。

    倍数法的推论:

    估算每个数的约数和比较难,可以反过来考虑每个数的贡献,即每个数会作为多少个数(1∼n1\sim n 内)的约数。

    1∼n1\sim n 的贡献分别是 n1,n2,n3⋯nn\dfrac{n}{1},\dfrac{n}{2},\dfrac{n}{3}\cdots\dfrac{n}{n},可发现个数约是 nlog⁡nn\log n。

  • 0∼2×1090\sim 2\times 10^9 中约数个数最多的数的约数个数是 16001600。

公式

  • 正约数个数:(c1+1)×(c2+1)×⋯×(cm+1)=∏i=1m(ci+1)\left(c_{1}+1\right) \times\left(c_{2}+1\right) \times \cdots \times\left(c_{m}+1\right)=\prod_{i=1}^{m}\left(c_{i}+1\right)。

  • 正约数和:(1+p1+p12+⋯+p1c1)×⋯×(1+pm+pm2+⋯+pmcm)=∏i=1m(∑j=0ci(pi)j)\left(1+p_{1}+p_{1}^{2}+\cdots+p_{1}^{c_{1}}\right) \times\cdots \times\left(1+p_{m}+p_{m}^{2}+\cdots+p_{m}^{c_{m}}\right)=\prod_{i=1}^{m}\left(\sum_{j=0}^{c_{i}}\left(p_{i}\right)^{j}\right)。

    证明:使用组合数证明即可。

代码

  • gcd lcmgcd~lcm

  • 单点约数筛

    • 试除法
  • 区间约数筛

    • 倍数法(埃氏)

三. 余数

概念

  • 对于 ∀a∈[0,m−1]\forall a \in[0, m-1],合 {a+km}(k∈Z)\{a+k m\}(k \in \mathbb{Z}) 的所有数模 mm 同余,余数都是 a0a_{0} 该集合称为一个模 mm 的同余类,简记为 aˉ\bar{a} 。

  • 模 mm 的同余类一共有 mm 个,分别为 0‾,1‾,2‾,⋯ ,m−1‾\overline{0}, \overline{1}, \overline{2}, \cdots, \overline{m-1} 。它们构成 mm 的完全剩余系。

  • 1∼m1 \sim m 中与 mm 互质的数代表的同余类共有 φ(m)\varphi(m) 个,它们构成 mm 的简化剩余系。 例如, 模 10 的简化剩余系为 {1‾,3‾,7‾,9‾}\{\overline{1}, \overline{3}, \overline{7}, \overline{9}\} 。

    乘法封闭:集合中的任意两个元素进行乘法运算,得到的结果还在这个集合中。

    简化剩余系的性质:mm 的简化剩余系关于 mm 乘法封闭。

    证明:设 mm 的简化剩余系中两数为 a,ba,b,则 a×ba\times b 也与 mm 互质,根据余数的性质, a×b mod ma\times b\bmod m 也与 mm 互质。

  • 若整数 b,mb, m 互质,并且 b∣ab \mid a,则存在一个整数 xx,使得 a/b≡a×x( mod m)a / b \equiv a \times x(\bmod m) 。称 xx 为 bb 的模 mm 乘法逆元,记为 b−1( mod m)b^{-1}(\bmod m)。因为 a/b≡a×b−1≡a/b×b×b−1( mod m)a / b \equiv a \times b^{-1} \equiv a / b \times b \times b^{-1}(\bmod m),所以 b×b−1≡1( mod m)b \times b^{-1} \equiv 1(\bmod m)。

定理 / 公式

  • 欧拉定理:若正整数 x,nx, n 互质,则 xφ(n)≡1( mod n)x^{\varphi(n)} \equiv 1(\bmod n),其中 φ(n)\varphi(n) 为欧拉函数。

    证明:设集合 SS 为 nn 的简化剩余系,记作 {a‾1,a‾2⋯a‾φ(n)}\{\overline{a}_1,\overline{a}_2\cdots\overline{a}_{\varphi(n)}\},TT 为 nn 的简化剩余系中所有数乘上 xx 构成的集合,记作 {x×a‾1,x×a‾2⋯x×a‾φ(n)}\{\overline{x\times a}_1,\overline{x\times a}_2\cdots \overline{x\times a}_{\varphi(n)}\}。

    1. 证明所有 TT 中元素都在 SS 中:

      因为 x,nx,n 互质,所以 gcd⁡(x,n)=1\gcd(x,n)=1,所以 gcd⁡(x mod n,n)=1\gcd(x\bmod n, n)=1。又因为简化剩余系具有乘法封闭的性质,所以 x×ai∈Sx\times a_i\in S

    2. 证明所有 TT 中元素在模意义下不重复:

      反证法。若 aia_i 和 aja_j 是 SS 中两个不同元素,且 x×ai≡x×aj( mod n)x\times a_i\equiv x\times a_j(\bmod n),则 x×(ai−aj)≡0( mod n)x\times(a_i-a_j)\equiv0(\bmod n)。又因为 x≢0( mod n)x\not\equiv 0(\bmod n),所以 ai−aj≡0( mod n)a_i-a_j\equiv 0(\bmod n),ai≡aj( mod n)a_i\equiv a_j(\bmod n)。矛盾。

    3. 证明 S=TS=T:

      因为 1 和 2,又因为 SS、TT 中元素数量相等,所以 S=TS=T。

    4. 证明定理:

      ∵xφ(n)a1a2⋯aφ(n)≡(xa1)(xa2)⋯(xaφ(n))≡a1a2⋯aφ(n)( mod n)∴aφ(n)≡1( mod n)\begin{gather} \because x^{\varphi(n)}a_1a_2\cdots a_{\varphi(n)}\equiv (xa_1)(xa_2)\cdots(xa_{\varphi(n)})\equiv a_1a_2\cdots a_{\varphi(n)}(\bmod n)\\ \therefore a^{\varphi(n)}\equiv 1(\bmod n)\\ \end{gather}

  • 费马小定理:若 pp 是质数,则对于任意整数 aa,有 ap≡a( mod p)a^{p} \equiv a(\bmod p)。

    欧拉定理中 nn 为质数,两边同乘 aa 的情况。

  • 欧拉定理推论1:若正整数 a,na, n 互质,则对于任意正整数 bb,有 ab≡ab mod φ(n)( mod n)a^{b} \equiv a^{b \bmod \varphi(n)}(\bmod n)。

    证明:设 b=k×φ(n)+rb=k\times \varphi(n)+r。

    ∵ab≡ab( mod n),aφ(n)≡1( mod n)∴ab×(1−1)k≡ab×((aφ(n))−1)k( mod n)ab≡ab mod φ(n)( mod n)\begin{gather} \because a^b\equiv a^b(\bmod n),a^{\varphi(n)}\equiv 1(\bmod n)\\ \therefore a^b\times (1^{-1})^k\equiv a^b\times ((a^{\varphi(n)})^{-1})^k(\bmod n)\\ a^b\equiv a^{b \bmod \varphi(n)}(\bmod n)\\ \end{gather}

  • 欧拉定理推论2:当 a,na, n 不一定互质且 b>φ(n)b>\varphi(n) 时, 有 ab≡ab mod φ(n)+φ(n)( mod n)a^{b} \equiv a^{b \bmod \varphi(n)+\varphi(n)}(\bmod n)。

    证明:略。

  • 裴蜀定理:对于任意整数 a,ba, b,存在一对整数 x,yx, y,满足 ax+by=gcd⁡(a,b)a x+b y=\operatorname{gcd}(a, b)。

    证明:

    1. b=0b=0 时,有 {x=0y=1\begin{cases}x=0\\y=1\end{cases} 满足。

    2. b>0b>0 时。设 b×x′+(a mod b)×y′=gcd⁡(b,a mod b)b\times x'+(a\bmod b)\times y'=\gcd(b,a\bmod b)。

      b×x′+(a−⌊ab⌋×b)×y′=gcd(a,b)a×y′+b×(x′−⌊ab⌋×y′)=gcd(a,b)b\times x'+(a-\left\lfloor \dfrac{a}{b}\right\rfloor\times b)\times y'=gcd(a,b)\\ a\times y'+b\times(x'-\left\lfloor\dfrac{a}{b}\right\rfloor\times y')=gcd(a,b)

      所以,有 {x=y′y=x′−⌊ab⌋×y′\begin{cases}x=y'\\y=x'-\left\lfloor\dfrac{a}{b}\right\rfloor\times y'\end{cases} 满足。

  • 方程 ax+by=ca x+b y=c 的通解:x=cdx0+kbd,y=cdy0−kad(k∈Z)x=\frac{c}{d} x_{0}+k \frac{b}{d},\quad y=\frac{c}{d} y_{0}-k \frac{a}{d}(k \in \mathbb{Z})。

代码

  • exgcdexgcd

  • 求逆元

    • 单点——exgcdexgcd、费马小定理

    • 区间——线性求逆元

    • 任意 nn 数——前缀积

  • crtcrt