写在前面:
还在写qwq,NOIP之前应该会写到exCRT及以后,但是省选数论比如 Lucas 扩展 Lucas 还有原根二次剩余这些东西可能要等到NOIP以后了。
关于题目我也没有做过多少,具体可以看看魏老师的博客,一车题,本文也是基本仿着魏老师博客写的(就是从这里学的qwq,掺杂了一些个人理解),链接在下面。
最后祝各位 NOIP RP++/bx
更新:
死回来了,NOIP 打了个二等,看起来没带脑子。
从某种意义上来说,我也是备战 NOIP2023 的最早的选手。
真的是脸都不要了。
0. 基本定义
-
整除:若对于 a , b ∈ Z a,b\in \mathbb{Z} a,b∈Z 且 b ≠ 0 b \neq 0 b=0,有 a m o d b = 0 a\bmod b=0 amodb=0,则我们称 b b b 整除 a a a 或 a a a 被 b b b 整除,记作 b ∣ a b\mid a b∣a,否则我们称 b b b 不整除 a a a 或 a a a 不被 b b b 整除,记作 b ∤ a b \nmid a b∤a。
-
同余:若对于 a , b , p ∈ Z a,b,p\in \mathbb{Z} a,b,p∈Z 且 p ≠ 0 p \neq 0 p=0,有 a m o d p = b m o d p a\bmod p=b\bmod p amodp=bmodp,则称 a a a 与 b b b 在模 p p p 意义下同余,记作 a ≡ b ( m o d p ) a\equiv b\pmod p a≡b(modp),否则称 a a a 与 b b b 在模 p p p 意义下不同余,记作 a ≢ b ( m o d p ) a\not\equiv b\pmod p a≡b(modp)。本文中不会特别区分 = = = 和 ≡ \equiv ≡,故可能存在混用情况,望见谅。
-
质数集:质数的集合,记作 P \mathbb{P} P
-
最大公约数:对于两个数 a , b a,b a,b,我们称数字 d d d 是 a , b a,b a,b 的最大公约数当 d d d 是整除 a , b a,b a,b 的最大整数,记作 gcd ( a , b ) \gcd(a,b) gcd(a,b),简记为 ( a , b ) (a,b) (a,b)。
-
互质:两个数 a , b a,b a,b 互质当且仅当 ( a , b ) = 1 (a,b)=1 (a,b)=1,记作 a ⊥ b a\bot b a⊥b。
-
质因子次数符号:把 n n n 分解质因数后数字 p p p 的幂次记作 ν p ( n ) \nu_p(n) νp(n)
-
各位数之和符号:在 p p p 进制下的数 n n n 各位数字的和记作 s p ( n ) s_p(n) sp(n),例如, s ( 123 ) = 6 s(123)=6 s(123)=6。
-
完系与缩系:对于一个数 m m m,我们称一个集合 S S S 是完系,当且仅当 ∀ n ∈ Z , T = { x ∣ x ∈ S , n ≡ x ( m o d m ) } , ∣ T ∣ = 1 \forall n\in\mathbb{Z},T=\{x|x\in S,n\equiv x\pmod m\},|T|=1 ∀n∈Z,T={ x∣x∈S,n≡x(modm)},∣T∣=1。我们称一个集合 S S S 是缩系,当且仅当 ∀ n ∈ Z , n ⊥ m , T = { x ∣ x ∈ S , n ≡ x ( m o d m ) } , ∣ T ∣ = 1 \forall n\in\mathbb{Z},n\bot m,T=\{x|x\in S,n\equiv x\pmod m\},|T|=1 ∀n∈Z,n⊥m,T={ x∣x∈S,n≡x(modm)},∣T∣=1。
1. 常见定理
1-1. 费马小定理
先给出两个引理。
引理 1:当 p p p 是质数时,其因子只有 1 1 1 和 p p p 两个。因此,若两个数相乘是 p p p 的倍数,其中必然至少有一个是 p p p 的倍数。
引理 2:对于 a ∈ Z , p ∈ P , p ∤ a a\in \mathbb{Z},p\in \mathbb{P},p\nmid a a∈Z,p∈P,p∤a,则 ∀ i , j ∈ [ 1 , p ) , i ≠ j , a i ≢ a j ( m o d p ) \forall i,j\in [1,p),i\neq j,ai\not\equiv aj\pmod p ∀i,j∈[1,p),i=j,ai≡aj(modp)。
考虑反证,若 a i ≡ a j ( m o d p ) ai\equiv aj\pmod p ai≡aj(modp),则 a ( i − j ) ≡ 0 ( m o d p ) a(i-j)\equiv 0\pmod p a(i−j)≡0(modp),与引理 1 矛盾。
引理二的另一表述为,对于 a ∈ Z , p ∈ P , p ∤ a a\in \mathbb{Z},p\in \mathbb{P},p\nmid a a∈Z,p∈P,p∤a, ∀ i ∈ [ 1 , p ) , a i \forall i\in [1,p),ai ∀i∈[1,p),ai 的取值互不相同且仍为 [ 1 , p ) [1,p) [1,p).
所以,对于 a ∈ Z , p ∈ P a\in \mathbb{Z},p\in \mathbb{P} a∈Z,p∈P,有 ∏ a i ≡ ∏ i ( m o d p ) \prod ai\equiv\prod i\pmod p ∏ai≡∏i(modp),所以 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p ap−1≡1(modp)。这就是费马小定理。
1-2. 欧拉定理
考虑将费马小定理推广到非素数的形式。首先我们试图将引理 1 推广到更一般的形式。
引理 1 拓展:若 a , b , p ∈ Z a,b,p\in \mathbb{Z} a,b,p∈Z 且 p ∣ a b p \mid ab p∣ab,则 a , b a,b a,b 至少有一个与 p p p 不互质。
我们设在 [ 1 , p ] [1,p] [1,p] 中有 x x x 个数与 p p p 互质,且构成的数字集合为 A = { a 1 , a 2 , . . . , a x } A=\{a_1,a_2,...,a_x\} A={ a1,a2,...,ax}。此时引理 2 可以被推广为
引理 2 拓展:对于 a , p ∈ Z , p ∤ a a,p\in \mathbb{Z},p\nmid a a,p∈Z,p∤a,则 ∀ i , j ∈ A , i ≠ j , a i ≢ a j ( m o d p ) \forall i,j\in A,i\neq j,ai\not\equiv aj\pmod p ∀i,j∈A,i=j,ai≡aj(modp)。
证明同上。对应的另一表述为,对于 a , p ∈ Z , p ∤ a a,p\in \mathbb{Z},p\nmid a a,p∈Z,p∤a, ∀ i ∈ A , a i \forall i\in A,ai ∀i∈A,ai 的取值互不相同且仍属于 A A A。
那么此时仿照上文,有 ∏ a a i ≡ ∏ a i ( m o d p ) \prod aa_i\equiv\prod a_i\pmod p ∏aai≡∏ai(modp),所以 a ∣ A ∣ ≡ 1 ( m o d p ) a^{|A|}\equiv1\pmod p a∣A∣≡1(modp)。其中 ∣ A ∣ |A| ∣A∣ 是 A A A 集合的大小,我们用 φ ( x ) \varphi(x) φ(x) 表示对于数字 x x x 对应 A A A 集合的大小。 φ ( x ) \varphi(x) φ(x) 为欧拉函数。代入验证可知当 p p p 为质数时,此定理依然成立。
关于欧拉函数,详见 初等数学瞎扯Ⅲ:数论函数 1,这里不再瞎扯赘述。
1-3. 威尔逊定理
下文中,若无特殊说明,默认 p ∈ P p\in \mathbb{P} p∈P。
1-3-1. 基本威尔逊定理
∏ i ∈ [ 1 , p ) i ≡ − 1 ( m o d p ) ⇔ p ∈ P \prod_{i\in[1,p)} i\equiv-1\pmod p\Leftrightarrow p\in \mathbb{P} ∏i∈[1,p)i≡−1(modp)⇔p∈P。
说人话, ( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)!\equiv -1\pmod p (p−1)!≡−1(modp)。
为证明上式,先证明一个引理。
引理 1:若 x x x 在模 p p p 意义下逆元为 y y y,则 y y y 在模 p p p 意义下逆元为 x x x。
证明:由已知, x y = 1 xy=1 xy=1,则 x − 1 ≡ y , y − 1 ≡ x x^{-1}\equiv y,y^{-1}\equiv x x−1≡y,y−1≡x。
另外可以注意到,若 x ≠ 1 x\neq 1 x=1,则 x ≠ y x\neq y x=y。
你可能会说,这么看来, ( p − 1 ) ! ≡ 1 ( m o d p ) (p-1)!\equiv1\pmod p (p−1)!≡1(modp),但是对于 i = 1 i=1 i=1 其逆元为 1 1 1,也就是对于 p ≠ 2 p\neq 2 p=2,逆元两两配对后会剩下一个元素,考虑这个元素是谁,注意到逆元也是属于 [ 1 , p ) [1,p) [1,p) 的,也就是说,设元素为 x x x,有 x 2 ≡ 1 x^2\equiv 1 x2≡1,解得 x = ± 1 = { 1 , p − 1 } x=\pm 1=\{1,p-1\} x=±1={ 1,p−1}。所以 ( p − 1 ) ! ≡ p − 1 ≡ − 1 ( m o d p ) (p-1)!\equiv p-1\equiv -1\pmod p (p−1)!≡p−1≡−1(modp) 在 p ≠ 2 p\neq 2 p=2 下成立。特别检验 p = 2 p=2 p=2 依然成立。
但这还没完,上面只说明了必要性,下面来证明充分性。考虑大力分讨。
- 若 x x x 为完全平方数且 x > 4 x>4 x>4,设 x = a 2 x=a^2 x=a2,则 a a a 与 2 a 2a 2a 存在与 ( x − 1 ) ! (x-1)! (x−1)! 中,故 ( x − 1 ) ! ≡ 0 ( m o d x ) (x-1)!\equiv 0\pmod x (x−1)!≡0(modx)。
- 若 x x x 为合数且不是完全平方数,设 x = p q ( p , q > 1 ) x=pq(p,q>1) x=pq(p,q>1),则 p p p 与 q q q 存在与 ( x − 1 ) ! (x-1)! (x−1)! 中,故 ( x − 1 ) ! ≡ 0 ( m o d x ) (x-1)!\equiv 0\pmod x (x−1)!≡0(modx)。
- 若 x = 4 x=4 x=4, 3 ! ≡ 2 ( m o d 4 ) 3!\equiv 2\pmod 4 3!≡2(mod4)。
得证。
所以你如果想求一个数是不是 4,你可以大力计算阶乘然后判断取模后是不是 2。
1-3-2. 威尔逊定理扩展
我们考虑一种修正阶乘,记作 ( n ! ) p (n!)_p (n!)p,这表示在 n n n 的阶乘中去掉所有含 p p p 的因子后的值。例如, ( 7 ! ) 2 = 1 × 1 × 3 × 1 × 5 × 3 × 5 m o d 2 (7!)_2=1\times1\times3\times1\times5\times3\times5\bmod2 (7!)2=1×1×3×1×5×3×5mod2,我们考虑该式子在模 p p p 意义下的值。我们先考虑素数幂次的取值,即 ( p k ! ) p (p^k!)_p (pk!)p。
首先试图把原式展开
( p k ! ) = 1 × 2 × . . . × ( p − 1 ) × 1 × ( p + 1 ) × ( p + 2 ) × . . . × ( 2 p − 1 ) × 2 × . . . × 1 = 1 × 2 × . . . × ( p − 1 ) × 1 × 1 × 2 × . . . × ( p − 1 ) × 2 × 1 × 2 × . . . × ( p − 1 ) × 1 \begin{aligned} &(p^k!)\\ =&1\times 2\times...\times(p-1)\times1\\ \times&(p+1)\times (p+2)\times...\times(2p-1)\times2\\ \times& ...\times1\\ =&1\times 2\times...\times(p-1)\times1\\ \times&1\times 2\times...\times (p-1)\times2\\ \times&1\times 2\times...\times (p-1)\times1 \end{aligned} =××=××(pk!)1×2×...×(p−1)×1(p+1)×(p+2)×...×(2p−1)×2...×11×2×...×(p−1)×11×2×...×(p−1)×21×2×...×(p−1)×1
然后用威尔逊定理的普通形式代入,得到原式变为
( − 1 ) p k − 1 × 1 × 2 × . . . (-1)^{p^{k-1}}\times1\times2\times... (−1)pk−1×1×2×...
注意到剩下的东西也是修正阶乘的形式,即为 ( p k − 1 ! ) p (p^{k-1}!)_p (pk−1!)p,答案可以递归下去,得到如下结果
( − 1 ) p k ( k − 1 ) 2 (-1)^{p^{\frac{k(k-1)}{2}}} (−1)p2k(k−1)
那么对于任意正整数 n n n,只需要计算遗留下来的其他东西即可,注意到个数不会超过 p p p,所以时间复杂度是 O ( p ) O(p) O(p) 的,尽管这看起来没啥大用。
1-3-3. 威尔逊定理的其它拓展
求 ( p k ! ) p (p^k!)_p (pk!)p,在这里模数是 p k p^k pk。
首先考虑 p > 2 p>2 p>2 的情况。仍去解方程 x 2 ≡ 1 ( m o d p k ) x^2\equiv 1\pmod {p^k} x2≡1(modpk),得到 x = ± 1 x=\pm 1 x=±1,结果仍为 − 1 -1 −1。
考虑 p = 2 p=2 p=2,移项得 x 2 − 1 = ( x + 1 ) ( x − 1 ) ≡ 0 ( m o d 2 k ) x^2-1=(x+1)(x-1)\equiv 0\pmod {2^k} x2−1=(x+1)(x