FFT
FFT 理论回顾
算法实现 ,对于 C ( x ) = A ( x ) B ( x ) C(x) = A(x)B(x) C ( x ) = A ( x ) B ( x ) ,A ( x ) A(x) A ( x ) 幂指为 m m m ,B ( x ) B(x) B ( x ) 幂指为 n n n
步骤1 ,补 0 0 0 ,预处理处理位逆序置换,多项式卷积应该有 t o t tot t o t 项,必须满足 2 t o t ⩾ ( m + n + 1 ) 2^{tot} \geqslant (m+n+1) 2 t o t ⩾ ( m + n + 1 )
设系数向量为 v 1 , v 2 \bm{v}_1, \bm{v}_2 v 1 , v 2 ,这样得到两个 O ( 2 n ) O(2n) O ( 2 n ) 多项式
步骤2 ,计算 O ( 2 n ) O(2n) O ( 2 n ) 多项式的点表示法,f 1 = DFT ( v 1 ) , f 2 = DFT ( v 2 ) \bm{f}_1 = \text{DFT}(\bm{v}_1), \ \bm{f}_2 = \text{DFT}(\bm{v}_2) f 1 = DFT ( v 1 ) , f 2 = DFT ( v 2 )
f 1 , f 2 \bm{f}_1, \bm{f}_2 f 1 , f 2 就是两个多项式在 O ( 2 n ) O(2n) O ( 2 n ) 次单位根处的点表示
步骤3 ,计算 f 1 ⋅ f 2 \bm{f}_1 \cdot \bm{f}_2 f 1 ⋅ f 2 ,向量每一维对应相乘,得到 f \bm{f} f
步骤4 ,计算 v = IDFT ( f ) \bm{v} = \text{IDFT}(\bm{f}) v = IDFT ( f ) ,其中 f \bm{f} f 就是乘积的系数向量
具体到一些细节上
细节1
DFT \text{DFT} DFT 和 IDFT \text{IDFT} IDFT 可以统一起来
计算 DFT \text{DFT} DFT 的时候,v \bm{v} v 对应的第 k k k 项,再对应到矩阵 V n V_n V n 中的值为 ω n k \omega_n^k ω n k
实际上就是取决于单位根 ω n = e 2 π i / n = cos ( 2 π n ) + i sin ( 2 π n ) \displaystyle \omega_n = \text{e}^{2\pi i / n} = \cos \left(\frac{2\pi}{n} \right) + i \sin \left(\frac{2\pi}{n} \right) ω n = e 2 π i / n = cos ( n 2 π ) + i sin ( n 2 π )
定义 ω = 1 \omega = 1 ω = 1 ,然后迭代 k k k 次,每一次令 ω = ω ⋅ ω n \omega = \omega \cdot \omega_n ω = ω ⋅ ω n
IDFT \text{IDFT} IDFT 呢?最终我们得到卷积第 k k k 项系数 a k = 1 n ⋅ ω n − k a_k = \displaystyle \frac{1}{n} \cdot \omega_n^{-k} a k = n 1 ⋅ ω n − k
这取决于 ω n − 1 = cos ( 2 π n ) − i sin ( 2 π n ) \displaystyle \omega_n^{-1} = \cos \left(\frac{2\pi}{n} \right) - i \sin \left(\frac{2\pi}{n} \right) ω n − 1 = cos ( n 2 π ) − i sin ( n 2 π )
同样可以定义 ω = 1 \omega = 1 ω = 1 ,迭代 k k k 次,每次令 ω = ω ⋅ ω n − 1 \omega = \omega \cdot \omega_n^{-1} ω = ω ⋅ ω n − 1
DFT ( v , 1 ) \text{DFT}(\bm{v}, 1) DFT ( v , 1 ) 表示 DFT \text{DFT} DFT 过程,DFT ( v , − 1 ) \text{DFT}(\bm{v}, -1) DFT ( v , − 1 ) 就表示 IDFT \text{IDFT} IDFT ,区别就在于 i sin i \sin i sin 之前乘不乘 − 1 -1 − 1
细节2
自底向上归并,根据
左半边 A ( ω n k ) = A 0 ( ω n / 2 k ) + ω n k A 1 ( ω n / 2 k ) \displaystyle A(\omega_{n}^k) = A_0(\omega_{n/2}^k) + \omega_{n}^k A_1(\omega_{n/2}^k) A ( ω n k ) = A 0 ( ω n / 2 k ) + ω n k A 1 ( ω n / 2 k )
右半边 A ( ω n k ) = A 0 ( ω n / 2 k ) − ω n k A 1 ( ω n / 2 k ) \displaystyle A(\omega_{n}^k) = A_0(\omega_{n/2}^k) - \omega_{n}^k A_1(\omega_{n/2}^k) A ( ω n k ) = A 0 ( ω n / 2 k ) − ω n k A 1 ( ω n / 2 k )
归并的最底层,代入 ω 1 k = 1 \omega_1^k = 1 ω 1 k = 1 ,所以最底层,实际上就是相对应的多项式系数 a k a_k a k
令 m i d = n / 2 mid = n/2 m i d = n / 2 ,那么我们有
for m i d ∈ [ 1 , 2 , 4 , ⋯ , O ( 2 n ) ) : for i ∈ [ 0 , 2 m i d , 4 m i d , ⋯ , O ( 2 n ) ) \textbf{for} \quad mid\in [1, 2, 4, \cdots, O(2n)): \quad \textbf{for} \quad i \in [0, 2mid, 4mid, \cdots, O(2n)) for m i d ∈ [ 1 , 2 , 4 , ⋯ , O ( 2 n ) ) : for i ∈ [ 0 , 2 m i d , 4 m i d , ⋯ , O ( 2 n ) )
注意这里归并的最底层,A ( ω 1 k ) = ∑ k a k A(\omega_1^k) = \displaystyle \sum_{k}a_k A ( ω 1 k ) = k ∑ a k
一边迭代一边求 ω n k \omega_n^k ω n k ,就是令 ω = 1 \omega = 1 ω = 1 ,然后每一次 ω = ω ⋅ ω n \omega = \omega \cdot \omega_n ω = ω ⋅ ω n
令 j ∈ [ 0 , m i d − 1 ) j \in [0, mid-1) j ∈ [ 0 , m i d − 1 ) ,取出原来对应的 x ← A [ i + j ] , y ← ω n k ⋅ A [ i + j + m i d ] x \leftarrow A[i+j], \quad y \leftarrow \omega_n^k \cdot A[i+j+mid] x ← A [ i + j ] , y ← ω n k ⋅ A [ i + j + m i d ]
更新 A [ i + j ] ← x + y , A [ i + j + m i d ] ← x − y A[i+j] \leftarrow x+y, \quad A[i+j+mid] \leftarrow x-y A [ i + j ] ← x + y , A [ i + j + m i d ] ← x − y
然后不要忘记更新 ω = ω ⋅ ω n \omega = \omega \cdot \omega_n ω = ω ⋅ ω n
原根理论
常用结论
Euler 函数的不完全积性,当且仅当 ( n , m ) = 1 (n, m) = 1 ( n , m ) = 1 时,φ ( n m ) = φ ( n ) φ ( m ) \varphi(nm) = \varphi(n) \varphi(m) φ ( n m ) = φ ( n ) φ ( m )
当 n = p k n = p^k n = p k 时,φ ( n ) = p k − p k − 1 \varphi(n) = p^k - p^{k-1} φ ( n ) = p k − p k − 1
阶
满足 a n ≡ 1 ( m o d p ) a^n \equiv 1 (\bmod p) a n ≡ 1 ( m o d p ) 的最小正整数 n n n 存在,这个 n n n 称为 a a a 模 p p p 的阶,记为 δ p ( a ) \delta_p(a) δ p ( a )
性质1
< a , a 2 , a 3 , ⋯ , a δ p ( a ) > \left<a, a^2, a^3, \cdots, a^{\delta_p(a)} \right> ⟨ a , a 2 , a 3 , ⋯ , a δ p ( a ) ⟩ 两两互不同余
考虑反证法,如果存在 a i ≡ a j ( m o d p ) a^i \equiv a^j (\bmod p) a i ≡ a j ( m o d p ) ,那么 a i − j ≡ 1 ( m o d p ) a^{i - j} \equiv 1(\bmod p) a i − j ≡ 1 ( m o d p )
但是 ∣ i − j ∣ < δ p ( a ) |i - j| < \delta_p(a) ∣ i − j ∣ < δ p ( a ) ,这与阶的定义矛盾
性质2
如果 a n ≡ 1 ( m o d p ) a^n \equiv 1 (\bmod p) a n ≡ 1 ( m o d p ) ,那么 δ p ( a ) ∣ n \delta_p(a) \mid n δ p ( a ) ∣ n ,也可以推出 δ p ( a ) ∣ ϕ ( p ) \delta_p(a) \mid \phi(p) δ p ( a ) ∣ ϕ ( p )
我们有 n = δ p ( a ) ⋅ q + r , 0 ⩽ r ⩽ δ p ( a ) − 1 n = \delta_p(a) \cdot q + r, \quad 0 \leqslant r \leqslant \delta_p(a)-1 n = δ p ( a ) ⋅ q + r , 0 ⩽ r ⩽ δ p ( a ) − 1
如果 r > 0 r > 0 r > 0 ,那么有 a r ≡ a n ⋅ ( a δ p ( a ) ) − q ≡ 1 ( m o d p ) \displaystyle a^r \equiv a^n \cdot \left(a^{\delta_p(a)} \right)^{-q} \equiv 1(\bmod p) a r ≡ a n ⋅ ( a δ p ( a ) ) − q ≡ 1 ( m o d p )
因为 r ∈ [ 1 , δ p ( a ) − 1 ] r \in [1, \delta_p(a)-1] r ∈ [ 1 , δ p ( a ) − 1 ] ,与阶的最小性矛盾,所以 δ p ( a ) ∣ n \delta_p(a) \mid n δ p ( a ) ∣ n
推论1
若有 a p ≡ a q ( m o d m ) a^p \equiv a^q(\bmod m) a p ≡ a q ( m o d m ) ,那么有 p ≡ q ( m o d δ m ( a ) ) p \equiv q (\bmod \ \delta_m(a)) p ≡ q ( m o d δ m ( a ) )
很显然,移项之后有 δ m ( a ) ∣ ( p − q ) \delta_m(a) \mid (p - q) δ m ( a ) ∣ ( p − q )
阶的混合运算
如果 gcd ( a , m ) = 1 \textbf{gcd}(a, m) = 1 gcd ( a , m ) = 1 ,那么下面记 a ⊥ m a \bot m a ⊥ m
性质3 ,设 m ∈ N ∗ , a , b ∈ Z m \in \mathbb{N}^{*}, \ a, b \in \mathbb{Z} m ∈ N ∗ , a , b ∈ Z ,如果 a ⊥ m , b ⊥ m a \bot m, b \bot m a ⊥ m , b ⊥ m ,则
δ m ( a b ) = δ m ( a ) δ m ( b ) \displaystyle \delta_m(ab) = \delta_m(a) \delta_m(b) δ m ( a b ) = δ m ( a ) δ m ( b ) 的充分必要条件是
gcd ( δ m ( a ) , δ m ( b ) ) = 1 \displaystyle \textbf{gcd}(\delta_m(a), \delta_m(b)) = 1 gcd ( δ m ( a ) , δ m ( b ) ) = 1
必要性,因为 a δ m ( a ) ≡ 1 ( m o d m ) a^{\delta_m(a)} \equiv 1(\bmod \ m) a δ m ( a ) ≡ 1 ( m o d m ) 以及 b δ m ( b ) ≡ 1 ( m o d m ) b^{\delta_m(b)} \equiv 1 (\bmod \ m) b δ m ( b ) ≡ 1 ( m o d m )
那么 ( a b ) lcm ( δ m ( a ) , δ m ( b ) ) ≡ 1 ( m o d m ) \displaystyle (ab)^{\text{lcm}(\delta_m(a), \delta_m(b))} \equiv 1 (\bmod \ m) ( a b ) lcm ( δ m ( a ) , δ m ( b ) ) ≡ 1 ( m o d m )
根据阶的性质,我们有 δ m ( a b ) ∣ lcm ( δ m ( a ) , δ m ( b ) ) \displaystyle \delta_m(ab) \mid \text{lcm}(\delta_m(a), \delta_m(b)) δ m ( a b ) ∣ lcm ( δ m ( a ) , δ m ( b ) )
根据条件 δ m ( a b ) = δ m ( a ) δ m ( b ) \delta_m(ab) = \delta_m(a) \delta_m(b) δ m ( a b ) = δ m ( a ) δ m ( b ) ,可以知道 δ m ( a ) δ m ( b ) ∣ lcm ( δ m ( a ) , δ m ( b ) ) \displaystyle \delta_m(a) \delta_m(b) \mid \text{lcm}(\delta_m(a), \delta_m(b)) δ m ( a ) δ m ( b ) ∣ lcm ( δ m ( a ) , δ m ( b ) )
即 gcd ( δ m ( a ) , δ m ( b ) ) = 1 \text{gcd}(\delta_m(a), \delta_m(b)) = 1 gcd ( δ m ( a ) , δ m ( b ) ) = 1
充分性,我们已知 gcd ( δ m ( a ) , δ m ( b ) ) = 1 \text{gcd}(\delta_m(a), \delta_m(b)) = 1 gcd ( δ m ( a ) , δ m ( b ) ) = 1
由 ( a b ) δ m ( a b ) ≡ 1 ( m o d m ) (ab)^{\delta_m(ab)} \equiv 1(\bmod m) ( a b ) δ m ( a b ) ≡ 1 ( m o d m ) (阶的定义),我们有
1 ≡ ( a b ) δ m ( a b ) = 1 ≡ ( a b ) δ m ( a b ) δ m ( b ) \displaystyle 1 \equiv (ab)^{\delta_m(ab)} = 1 \equiv (ab)^{\delta_m(ab) \delta_m(b)} 1 ≡ ( a b ) δ m ( a b ) = 1 ≡ ( a b ) δ m ( a b ) δ m ( b ) ,这一步如果有异议,可以这么看
a ⊥ m , b ⊥ m a\bot m, b\bot m a ⊥ m , b ⊥ m ,所以 ( a b ) ⊥ m (ab) \bot m ( a b ) ⊥ m ,那么 ( a b ) δ m ( a b ) = k m + 1 (ab)^{\delta_m(ab)} = km + 1 ( a b ) δ m ( a b ) = k m + 1 ,那么 ( ( a b ) δ m ( a b ) ) p = ( 1 + k m ) p ≡ 1 ( m o d m ) \displaystyle \left((ab)^{\delta_m(ab)}\right)^p = (1+km)^p \equiv 1 (\bmod \ m) ( ( a b ) δ m ( a b ) ) p = ( 1 + k m ) p ≡ 1 ( m o d m )
由此 1 ≡ ( a b ) δ m ( a b ) δ m ( b ) ≡ a δ m ( a b ) δ m ( b ) ( m o d m ) \displaystyle 1 \equiv (ab)^{\delta_m(ab) \delta_m(b)} \equiv a^{\delta_m(ab) \delta_m(b)} (\bmod \ m) 1 ≡ ( a b ) δ m ( a b ) δ m ( b ) ≡ a δ m ( a b ) δ m ( b ) ( m o d m )
那么根据性质 2,我们有 δ m ( a ) ∣ δ m ( a b ) δ m ( b ) \delta_m(a) \mid \delta_m(ab) \delta_m(b) δ m ( a ) ∣ δ m ( a b ) δ m ( b ) ,因为 δ m ( a ) ⊥ δ m ( b ) \delta_m(a) \bot \delta_m(b) δ m ( a ) ⊥ δ m ( b ) ,所以我们有
δ m ( a ) ∣ δ m ( a b ) \delta_m(a) \mid \delta_m(ab) δ m ( a ) ∣ δ m ( a b ) ,对称地也有 δ m ( b ) ∣ δ m ( a b ) \delta_m(b) \mid \delta_m(ab) δ m ( b ) ∣ δ m ( a b )
综上所述,我们有 δ m ( a ) δ m ( b ) ∣ δ m ( a b ) \delta_m(a) \delta_m(b) \mid \delta_m(ab) δ m ( a ) δ m ( b ) ∣ δ m ( a b )
另一方面,我们有 ( a b ) δ m ( a ) δ m ( b ) ≡ ( a δ m ( a ) ) δ m ( b ) ⋅ ( b δ m ( b ) ) δ m ( a ) ≡ 1 ( m o d m ) (ab)^{\delta_m(a) \delta_m(b)} \equiv \left(a^{\delta_m(a)} \right)^{\delta_m(b)} \cdot \left(b^{\delta_m(b)} \right)^{\delta_m(a)} \equiv 1(\bmod \ m) ( a b ) δ m ( a ) δ m ( b ) ≡ ( a δ m ( a ) ) δ m ( b ) ⋅ ( b δ m ( b ) ) δ m ( a ) ≡ 1 ( m o d m )
所以 δ m ( a b ) ∣ δ m ( a ) δ m ( b ) \delta_m(ab) \mid \delta_m(a) \delta_m(b) δ m ( a b ) ∣ δ m ( a ) δ m ( b ) ,综上所述 δ m ( a b ) = δ m ( a ) δ m ( b ) \delta_m(ab) = \delta_m(a) \delta_m(b) δ m ( a b ) = δ m ( a ) δ m ( b )
性质4
设 k ∈ N , m ∈ N ∗ , a ∈ Z k \in \mathbb{N}, m \in \mathbb{N}^{*}, \ a \in \mathbb{Z} k ∈ N , m ∈ N ∗ , a ∈ Z ,如果 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,即 a ⊥ m a \bot m a ⊥ m ,那么
δ m ( a k ) = δ m ( a ) gcd ( δ m ( a ) , k ) \delta_m(a^k) = \frac{ \delta_m(a) }{\text{gcd}(\delta_m(a), k)}
δ m ( a k ) = gcd ( δ m ( a ) , k ) δ m ( a )
首先,a ⊥ m a \bot m a ⊥ m ,那么如果 k ∈ N k \in \mathbb{N} k ∈ N ,有 a k ⊥ m a^k \bot m a k ⊥ m ,这个之前用 a k = ( p m + 1 ) k ≡ 1 ( m o d m ) a^k = (pm + 1)^k \equiv 1(\bmod m) a k = ( p m + 1 ) k ≡ 1 ( m o d m ) 证明过了
注意到 a ( k ⋅ δ m ( a k ) ) = ( a k ) δ m ( a k ) ≡ 1 ( m o d m ) \displaystyle a^{(k \cdot \delta_m(a^k))} = \left(a^k \right)^{\delta_m(a^k)} \equiv 1(\bmod \ m) a ( k ⋅ δ m ( a k ) ) = ( a k ) δ m ( a k ) ≡ 1 ( m o d m )
由此 δ m ( a ) ∣ k δ m ( a k ) \delta_m(a) \mid k \delta_m(a^k) δ m ( a ) ∣ k δ m ( a k )
⇒ δ m ( a ) gcd ( δ m ( a ) , k ) ∣ δ m ( a k ) \Rightarrow \displaystyle \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)} \mid \delta_m(a^k) ⇒ gcd ( δ m ( a ) , k ) δ m ( a ) ∣ δ m ( a k )
另一方面,因为 a δ m ( a ) ≡ 1 ( m o d m ) a^{\delta_m(a)} \equiv 1 (\bmod m) a δ m ( a ) ≡ 1 ( m o d m ) ,可以知道
令 r = k gcd ( k , δ m ( a ) ) \displaystyle r = \frac{k}{\text{gcd}(k, \delta_m(a))} r = gcd ( k , δ m ( a ) ) k ,那么 a r ⋅ δ m ( a ) ≡ 1 ( m o d m ) \displaystyle a^{r \cdot \delta_m(a)} \equiv 1(\bmod m) a r ⋅ δ m ( a ) ≡ 1 ( m o d m )
( a k ) δ m ( a ) gcd ( δ m ( a ) , k ) = ( a δ m ( a ) ) k gcd ( δ m ( a ) , k ) ≡ 1 ( m o d m ) \displaystyle \left(a^k \right)^{\frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)}} = \left(a^{\delta_m(a)} \right)^{\frac{k}{\text{gcd}(\delta_m(a), k)}} \equiv 1 (\bmod m) ( a k ) gcd ( δ m ( a ) , k ) δ m ( a ) = ( a δ m ( a ) ) gcd ( δ m ( a ) , k ) k ≡ 1 ( m o d m )
从而有 δ m ( a k ) ∣ δ m ( a ) gcd ( δ m ( a ) , k ) \displaystyle \delta_m(a^k) \mid \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)} δ m ( a k ) ∣ gcd ( δ m ( a ) , k ) δ m ( a ) ,从而 δ m ( a k ) = δ m ( a ) gcd ( δ m ( a ) , k ) \displaystyle \delta_m(a^k) = \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), k)} δ m ( a k ) = gcd ( δ m ( a ) , k ) δ m ( a )
原根
设 m ∈ N ∗ , a ∈ Z m \in \mathbb{N}^{*}, \ a \in \mathbb{Z} m ∈ N ∗ , a ∈ Z ,如果 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,并且 δ m ( a ) = φ ( m ) \delta_m(a) = \varphi(m) δ m ( a ) = φ ( m )
称 a a a 为模 m m m 的原根
原根判定定理
假设 m ⩾ 3 m \geqslant 3 m ⩾ 3 ,如果 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,则 a a a 是模 m m m 的原根的充要条件 是,对于 φ ( m ) \varphi(m) φ ( m ) 的每个素因子 p p p
都有 a φ ( m ) / p ≢ 1 ( m o d m ) \displaystyle a^{\varphi(m) / p} \not \equiv 1(\bmod m) a φ ( m ) / p ≡ 1 ( m o d m )
必要性是显然的,否则 φ ( m ) / p \varphi(m) / p φ ( m ) / p 应该是 a a a 在模 m m m 意义下的阶了,下面证明充分性
对于 φ ( m ) \varphi(m) φ ( m ) 的每个素因子 p p p ,都有 a φ ( m ) / p ≢ 1 ( m o d m ) a^{\varphi(m) / p} \not \equiv 1 (\bmod m) a φ ( m ) / p ≡ 1 ( m o d m ) 成立时,如果有一个 a a a
不是模 m m m 的原根,那么存在 t < φ ( m ) t < \varphi(m) t < φ ( m ) ,使得 a t ≡ 1 ( m o d m ) a^t \equiv 1(\bmod m) a t ≡ 1 ( m o d m )
那么根据 Bézout’s 定理,一定存在 ( x , y ) (x, y) ( x , y ) ,使得 t ⋅ x + φ ( m ) ⋅ y = gcd ( t , φ ( m ) ) t \cdot x + \varphi(m) \cdot y = \text{gcd}(t, \varphi(m)) t ⋅ x + φ ( m ) ⋅ y = gcd ( t , φ ( m ) )
换句话说,我们能找到 ( k , x ) (k, x) ( k , x ) ,使得 k t = x φ ( m ) + gcd ( t , φ ( m ) ) kt = x\varphi(m) + \text{gcd}(t, \varphi(m)) k t = x φ ( m ) + gcd ( t , φ ( m ) )
根据 Euler 定理,我们有 a φ ( m ) ≡ 1 ( m o d m ) \displaystyle a^{\varphi(m)} \equiv 1 (\bmod \ m) a φ ( m ) ≡ 1 ( m o d m ) ,所以
1 ≡ a k t = a x φ ( m ) + gcd ( t , φ ( m ) ) ≡ a gcd ( t , φ ( m ) ) ( m o d m ) \displaystyle 1 \equiv a^{kt} = a^{x\varphi(m) + \text{gcd}(t, \varphi(m))} \equiv a^{\text{gcd}(t, \varphi(m))} (\bmod \ m) 1 ≡ a k t = a x φ ( m ) + gcd ( t , φ ( m ) ) ≡ a gcd ( t , φ ( m ) ) ( m o d m )
因为 gcd ( t , φ ( m ) ) ∣ φ ( m ) \text{gcd}(t, \varphi(m)) \mid \varphi(m) gcd ( t , φ ( m ) ) ∣ φ ( m ) 并且 gcd ( t , φ ( m ) ) ⩽ t < φ ( m ) \text{gcd}(t, \varphi(m)) \leqslant t < \varphi(m) gcd ( t , φ ( m ) ) ⩽ t < φ ( m )
根据 gcd ( t , φ ( m ) ) < φ ( m ) \text{gcd}(t, \varphi(m)) < \varphi(m) gcd ( t , φ ( m ) ) < φ ( m ) ,一定存在 φ ( m ) \varphi(m) φ ( m ) 的素因子 p p p ,使得 gcd ( t , φ ( m ) ) ∣ φ ( m ) p \displaystyle \text{gcd}(t, \varphi(m)) \mid \frac{\varphi(m)}{p} gcd ( t , φ ( m ) ) ∣ p φ ( m )
a φ ( m ) / p ≡ a gcd ( t , φ ( m ) ) ≡ 1 ( m o d m ) a^{\varphi(m) / p} \equiv a^{\text{gcd}(t, \varphi(m))} \equiv 1(\bmod m) a φ ( m ) / p ≡ a gcd ( t , φ ( m ) ) ≡ 1 ( m o d m ) ,与条件矛盾
原根个数
若一个数 m m m 有原根,则它的原根个数为 φ ( φ ( m ) ) \varphi(\varphi(m)) φ ( φ ( m ) )
假设 m m m 有原根 g g g ,即 φ ( m ) = δ m ( g ) \varphi(m) = \delta_m(g) φ ( m ) = δ m ( g ) ,根据性质 4
δ m ( g k ) = δ m ( g ) gcd ( δ m ( g ) , k ) = φ ( m ) gcd ( φ ( m ) , k ) \displaystyle \delta_m(g^k) = \frac{\delta_m(g)}{\text{gcd}(\delta_m(g), k)} = \frac{\varphi(m)}{\text{gcd}(\varphi(m), k)} δ m ( g k ) = gcd ( δ m ( g ) , k ) δ m ( g ) = gcd ( φ ( m ) , k ) φ ( m )
如果有 gcd ( k , φ ( m ) ) = 1 \text{gcd}(k, \varphi(m)) = 1 gcd ( k , φ ( m ) ) = 1 ,那么有 δ ( g k ) = φ ( m ) \delta_(g^k) = \varphi(m) δ ( g k ) = φ ( m ) ,即 g k g^k g k 也是模 m m m 的原根
满足 gcd ( φ ( m ) , k ) = 1 \text{gcd}(\varphi(m), k) = 1 gcd ( φ ( m ) , k ) = 1 并且 1 ⩽ k ⩽ φ ( m ) 1 \leqslant k \leqslant \varphi(m) 1 ⩽ k ⩽ φ ( m ) 的 k k k 一共有 φ ( φ ( m ) ) \varphi(\varphi(m)) φ ( φ ( m ) ) 个
原根的判定,比如设 m = 7 m = 7 m = 7 ,求 m = 7 m = 7 m = 7 的原根,只要根据判定定理,先算出 φ ( 7 ) = 6 \varphi(7) = 6 φ ( 7 ) = 6
然后素因子分解 φ ( 7 ) = 6 = 2 ⋅ 3 \varphi(7) = 6 = 2 \cdot 3 φ ( 7 ) = 6 = 2 ⋅ 3 ,如果 a a a 是 7 7 7 的原根,不妨设 a = 3 a = 3 a = 3
那么 3 3 ≡ 6 ≢ 1 ( m o d 7 ) 3^3 \equiv 6 \not \equiv 1 (\bmod \ 7) 3 3 ≡ 6 ≡ 1 ( m o d 7 ) ,3 2 ≡ 2 ≢ 1 ( m o d 7 ) 3^2 \equiv 2 \not \equiv 1 (\bmod \ 7) 3 2 ≡ 2 ≡ 1 ( m o d 7 )
所以 3 3 3 是 7 7 7 的一个原根
原根与简化剩余系
模 m m m 的一个简化剩余系 ,是 φ ( m ) \varphi(m) φ ( m ) 个整数的一个集合,这些数都对模 m m m 互不同余,并且每一个数 都和 m m m 互素
如果 { a 1 , a 2 , ⋯ , a φ ( m ) } \{a_1, a_2, \cdots, a_{\varphi(m)}\} { a 1 , a 2 , ⋯ , a φ ( m ) } 是模 m m m 的一个简化剩余系,若 ( k , m ) = 1 (k, m) = 1 ( k , m ) = 1 ,那么
( k a 1 , k a 2 , ⋯ , k a φ ( m ) ) (ka_1, ka_2, \cdots, ka_{\varphi(m)}) ( k a 1 , k a 2 , ⋯ , k a φ ( m ) ) 也是模 m m m 的一个简化剩余系
原根与简化剩余系定理 令 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,则 a a a 是模 m m m 的一个原根当且仅当
{ a , a 2 , ⋯ , a φ ( m ) } \displaystyle \{a, a^2, \cdots, a^{\varphi(m)} \} { a , a 2 , ⋯ , a φ ( m ) } 成为模 m m m 的一个简化剩余系
必要性可以根据阶的性质1,直接得出
充分性,如果 { a , a 2 , ⋯ , a φ ( m ) } \{a, a^2, \cdots, a^{\varphi(m)}\} { a , a 2 , ⋯ , a φ ( m ) } 是简化剩余系,那么 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,又根据 Euler 定理
a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)} \equiv 1(\bmod \ m) a φ ( m ) ≡ 1 ( m o d m ) ,并且这些数互不同余,所以 φ ( m ) \varphi(m) φ ( m ) 是能够找到的最小的幂指 k k k
使得 a k ≡ 1 ( m o d m ) a^k \equiv 1(\bmod m) a k ≡ 1 ( m o d m ) ,根据原根的定义,a a a 是原根
原根存在定理
一个数 m m m 存在原根,当且仅当 m = 2 , 4 , p α , 2 p α m = 2, 4, p^{\alpha}, 2p^{\alpha} m = 2 , 4 , p α , 2 p α ,其中 p p p 为奇素数 ,α ∈ N ∗ \alpha \in \mathbb{N}^{*} α ∈ N ∗
下面分为四部分证明,分别是 m = { 2 , 4 } , { p α } , { 2 p α } , m ∉ { 2 , 4 , p α , 2 p α } m = \{2, 4\}, \{p^{\alpha}\}, \{2p^{\alpha}\}, m \notin \{2, 4, p^{\alpha}, 2p^{\alpha}\} m = { 2 , 4 } , { p α } , { 2 p α } , m ∈ / { 2 , 4 , p α , 2 p α }
m = 2 , 4 m = 2, 4 m = 2 , 4 ,对于 m = 2 m = 2 m = 2 ,1 1 1 是它的原根,对于 m = 4 m = 4 m = 4 ,φ ( 4 ) = 2 \varphi(4) = 2 φ ( 4 ) = 2 ,3 φ ( 4 ) / 2 ≡ 3 ≢ 1 ( m o d 4 ) 3^{\varphi(4)/2} \equiv 3 \not \equiv 1 (\bmod 4) 3 φ ( 4 ) / 2 ≡ 3 ≡ 1 ( m o d 4 ) ,3 3 3 是一个原根
或者可以用定义证明,3 2 = 3 φ ( 4 ) ≡ 1 ( m o d 4 ) 3^2 = 3^{\varphi(4)} \equiv 1 (\bmod 4) 3 2 = 3 φ ( 4 ) ≡ 1 ( m o d 4 ) ,并且没有更小的幂指 t t t 使得 3 t ≡ 1 ( m o d 4 ) 3^t \equiv 1(\bmod 4) 3 t ≡ 1 ( m o d 4 )
以下用 ( a , p ) = 1 (a, p) = 1 ( a , p ) = 1 表示 a , p a, p a , p 互素
定理1 ,对于奇素数 p p p ,p p p 有原根
引理1 ,假设 ( a , p ) = 1 , ( b , p ) = 1 (a, p) = 1, (b, p) = 1 ( a , p ) = 1 , ( b , p ) = 1 ,存在 c ∈ Z c \in \mathbb{Z} c ∈ Z ,使得 δ p ( c ) = lcm ( δ p ( a ) , δ p ( b ) ) \delta_p(c) = \text{lcm}(\delta_p(a), \delta_p(b)) δ p ( c ) = lcm ( δ p ( a ) , δ p ( b ) )
证明如下,先对 δ m ( a ) , δ m ( b ) \delta_m(a), \delta_m(b) δ m ( a ) , δ m ( b ) 唯一分解,这里用 m ← p m \leftarrow p m ← p
δ m ( a ) = ∏ i = 1 k p i α i , δ m ( b ) = ∏ i = 1 k p i β i \displaystyle \delta_m(a) = \prod_{i = 1}^{k} p_i^{\alpha_i}, \quad \delta_m(b) = \prod_{i = 1}^{k} p_i^{\beta_i} δ m ( a ) = i = 1 ∏ k p i α i , δ m ( b ) = i = 1 ∏ k p i β i
令 δ m ( a ) = X Y , δ m ( b ) = Z W \displaystyle \delta_m(a) = XY, \ \delta_m(b) = ZW δ m ( a ) = X Y , δ m ( b ) = Z W ,其中
Y = ∏ i = 1 k p i [ α i > β i ] α i , X = δ m ( a ) Y \displaystyle Y = \prod_{i = 1}^{k} p_i^{[\alpha_i > \beta_i] \alpha_i}, \quad X = \frac{\delta_m(a)}{Y} Y = i = 1 ∏ k p i [ α i > β i ] α i , X = Y δ m ( a )
W = ∏ i = 1 k p i [ α i ⩽ β i ] β i , Z = δ m ( b ) W \displaystyle W = \prod_{i = 1}^{k} p_i^{[\alpha_i \leqslant \beta_i] \beta_i}, \quad Z = \frac{\delta_m(b)}{W} W = i = 1 ∏ k p i [ α i ⩽ β i ] β i , Z = W δ m ( b )
通俗一点说,我们把 δ m ( a ) , δ m ( b ) \delta_m(a), \delta_m(b) δ m ( a ) , δ m ( b ) 出现的所有素因子统计出来 { p 1 , p 2 , ⋯ , p k } \{p_1, p_2, \cdots, p_k\} { p 1 , p 2 , ⋯ , p k }
对于每一个素因子 p i p_i p i ,如果它在 δ m ( a ) \delta_m(a) δ m ( a ) 中出现的幂指比 δ m ( b ) \delta_m(b) δ m ( b ) 中的大,就把它放到 Y Y Y 中,否则放到 W W W 中
如果因子 p i p_i p i 在 δ m ( a ) \delta_m(a) δ m ( a ) 中没有出现,它的幂指看作是 0 0 0
这样显然有 gcd ( Y , W ) = 1 \text{gcd}(Y, W) = 1 gcd ( Y , W ) = 1 ,lcm ( δ m ( a ) , δ m ( b ) ) = lcm ( Y , W ) \text{lcm}(\delta_m(a), \delta_m(b)) = \text{lcm}(Y, W) lcm ( δ m ( a ) , δ m ( b ) ) = lcm ( Y , W )
根据阶的性质4 , δ m ( a X ) = δ m ( a ) gcd ( δ m ( a ) , X ) = X Y X = Y \displaystyle \delta_m(a^{X}) = \frac{\delta_m(a)}{\text{gcd}(\delta_m(a), X)} = \frac{XY}{X} = Y δ m ( a X ) = gcd ( δ m ( a ) , X ) δ m ( a ) = X X Y = Y
同理,δ m ( b Z ) = W \displaystyle \delta_m(b^Z) = W δ m ( b Z ) = W ,又因为 ( Y , W ) = 1 (Y, W) = 1 ( Y , W ) = 1 ,所以
Y W = lcm ( Y , W ) = lcm ( δ m ( a ) , δ m ( b ) ) YW = \text{lcm}(Y, W) = \text{lcm} \left(\delta_m(a), \delta_m(b) \right) Y W = lcm ( Y , W ) = lcm ( δ m ( a ) , δ m ( b ) )
另一方面,( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,所以 ( a k , m ) = 1 (a^k, m) = 1 ( a k , m ) = 1 ,否则就可以找到 p ∣ a p \mid a p ∣ a ,与 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 矛盾
根据阶的性质3 ,δ m ( a X b Z ) = δ m ( a X ) δ m ( b Z ) = Y M = lcm ( δ m ( a ) , δ m ( b ) ) \displaystyle \delta_m(a^Xb^Z) = \delta_m(a^X) \delta_m(b^Z) = YM = \text{lcm}(\delta_m(a), \delta_m(b)) δ m ( a X b Z ) = δ m ( a X ) δ m ( b Z ) = Y M = lcm ( δ m ( a ) , δ m ( b ) )
取 c = a X b Z c = a^Xb^Z c = a X b Z ,证毕
接下来回到原问题
对于素数 p p p ,{ 1 , 2 , ⋯ , p − 1 } \{1, 2, \cdots, p-1\} { 1 , 2 , ⋯ , p − 1 } 均与 p p p 互素,对 φ ( p ) \varphi(p) φ ( p ) 个数两两使用引理,我们可以找到一个 g ∈ Z g \in \mathbb{Z} g ∈ Z
使得 δ p ( g ) = lcm ( δ p ( 1 ) , δ p ( 2 ) , ⋯ , δ p ( p − 1 ) ) \delta_p(g) = \textbf{lcm}(\delta_p(1), \delta_p(2), \cdots, \delta_p(p-1)) δ p ( g ) = lcm ( δ p ( 1 ) , δ p ( 2 ) , ⋯ , δ p ( p − 1 ) ) ,说明对任意的 j ∈ { 1 , 2 , ⋯ , p − 1 } j \in \{1, 2, \cdots, p-1\} j ∈ { 1 , 2 , ⋯ , p − 1 }
有 δ p ( j ) ∣ δ p ( g ) \delta_p(j) \mid \delta_p(g) δ p ( j ) ∣ δ p ( g )
研究二项同余式 x δ p ( g ) ≡ 1 ( m o d p ) \displaystyle x^{\delta_p(g)} \equiv 1 (\bmod \ p) x δ p ( g ) ≡ 1 ( m o d p )
根据阶的性质2 ,对于二项同余式 x δ p ( g ) ≡ 1 ( m o d p ) x^{\delta_p(g)} \equiv 1(\bmod \ p) x δ p ( g ) ≡ 1 ( m o d p ) ,有 δ p ( x ) ∣ δ p ( g ) \delta_p(x) \mid \delta_p(g) δ p ( x ) ∣ δ p ( g )
也就是说,x = j = { 1 , 2 , ⋯ , p − 1 } x = j = \{1, 2, \cdots, p-1\} x = j = { 1 , 2 , ⋯ , p − 1 } 都是同余式的根
根据拉格朗日定理 ,有 p − 1 p-1 p − 1 个根,那么多项式的幂指 δ p ( g ) ⩾ p − 1 \delta_p(g) \geqslant p-1 δ p ( g ) ⩾ p − 1
再根据Fermat定理 ,p p p 是素数并且 p ∤ x p \nmid x p ∤ x ,那么 x p − 1 ≡ 1 ( m o d p ) x^{p-1} \equiv 1(\bmod \ p) x p − 1 ≡ 1 ( m o d p )
满足 p ∤ x p \nmid x p ∤ x ,也就是说 ( x m o d p ) ∈ { 1 , 2 , ⋯ , p − 1 } (x \bmod p) \in \{1, 2, \cdots, p-1\} ( x m o d p ) ∈ { 1 , 2 , ⋯ , p − 1 } ,根据 m o d p \bmod p m o d p 的余数进行分类
x x x 可以有 p − 1 p-1 p − 1 类取值,我们说同余方程 x p − 1 ≡ 1 ( m o d p ) x^{p-1} \equiv 1 (\bmod p) x p − 1 ≡ 1 ( m o d p ) 有 p − 1 p-1 p − 1 个根
回到本问题,用Fermat定理 表述为,x δ p ( g ) ≡ 1 ( m o d p ) \displaystyle x^{\delta_p(g)} \equiv 1(\bmod \ p) x δ p ( g ) ≡ 1 ( m o d p )
当 δ p ( g ) = p − 1 \delta_p(g) = p-1 δ p ( g ) = p − 1 时恰有它全部的根,而本问题之前已经找出了 { 1 , 2 , ⋯ , p − 1 } \{1, 2, \cdots, p-1\} { 1 , 2 , ⋯ , p − 1 } 个根
也许还有其他的根,所以 δ p ( g ) ⩽ p − 1 \delta_p(g) \leqslant p-1 δ p ( g ) ⩽ p − 1
综上所述,δ p ( g ) = p − 1 = φ ( p ) \delta_p(g) = p-1 = \varphi(p) δ p ( g ) = p − 1 = φ ( p ) ,g g g 为模 p p p 的原根,证毕
定理2 ,对于奇素数 p p p ,α ∈ N ∗ \alpha \in \mathbb{N}^{*} α ∈ N ∗ ,p α p^{\alpha} p α 有原根
证明的想法是,将模 p p p 的原根平移
引理2 ,存在模 p p p 的原根 g g g ,使得 g p − 1 ≢ 1 ( m o d p 2 ) g^{p-1} \not \equiv 1(\bmod \ p^2) g p − 1 ≡ 1 ( m o d p 2 )
证明,任取模 p p p 的原根,如果发现 g p − 1 ≡ 1 ( m o d p 2 ) g^{p-1} \equiv 1(\bmod p^2) g p − 1 ≡ 1 ( m o d p 2 ) 不满足条件,就让 g = g + p g = g+p g = g + p
{ g , g 2 , ⋯ g φ ( p ) } \{g, g^2, \cdots g^{\varphi(p)}\} { g , g 2 , ⋯ g φ ( p ) } 取遍 p p p 的简化剩余系,同样 { g + p , ⋯ , ( g + p ) φ ( p ) } \{g+p, \cdots, (g+p)^{\varphi(p)}\} { g + p , ⋯ , ( g + p ) φ ( p ) } 也取遍简化剩余系
因为 ( g + p ) k ≡ g ( m o d p ) (g+p)^k \equiv g(\bmod p) ( g + p ) k ≡ g ( m o d p ) ,所以有 ( g + p ) (g+p) ( g + p ) 也是模 p p p 的原根
( g + p ) p − 1 ≡ ( p − 1 0 ) g p − 1 + ( p − 1 1 ) p g p − 2 \displaystyle (g+p)^{p-1} \equiv \binom{p-1}{0} g^{p-1} + \binom{p-1}{1} pg^{p-2} ( g + p ) p − 1 ≡ ( 0 p − 1 ) g p − 1 + ( 1 p − 1 ) p g p − 2
≡ g p − 1 + p ( p − 1 ) g p − 2 ≡ 1 − p g p − 2 ( m o d p 2 ) \displaystyle \quad \equiv g^{p-1} + p(p-1)g^{p-2} \equiv 1-pg^{p-2} (\bmod p^2) ≡ g p − 1 + p ( p − 1 ) g p − 2 ≡ 1 − p g p − 2 ( m o d p 2 ) ,因为 p g p − 2 ≢ 0 ( m o d p 2 ) pg^{p-2} \not \equiv 0 (\bmod p^2) p g p − 2 ≡ 0 ( m o d p 2 )
所以有 ( g + p ) p − 1 ≢ 1 ( m o d p 2 ) (g+p)^{p-1} \not \equiv 1(\bmod p^2) ( g + p ) p − 1 ≡ 1 ( m o d p 2 )
证明 ,如果 g g g 是满足 g p − 1 ≢ 1 ( m o d p 2 ) g^{p-1} \not \equiv 1(\bmod \ p^2) g p − 1 ≡ 1 ( m o d p 2 ) 的原根 ,那么对于任意 α ⩾ 1 \alpha \geqslant 1 α ⩾ 1 ,g g g 也是模 p α p^{\alpha} p α 的原根
假设 t t t 是 g g g 的阶 ( m o d p α ) (\bmod \ p^{\alpha}) ( m o d p α ) ,即令 t = δ p α ( g ) t = \delta_{p^{\alpha}}(g) t = δ p α ( g ) ,我们希望证明 t = φ ( p α ) t = \varphi(p^{\alpha}) t = φ ( p α )
(1) 首先有 g t ≡ 1 ( m o d p α ) g^t \equiv 1 (\bmod \ p^{\alpha}) g t ≡ 1 ( m o d p α ) ,这是根据阶的定义
(2) 另外,g t = k p α + 1 g^{t} = kp^{\alpha} + 1 g t = k p α + 1 ,我们也有 g t ≡ 1 ( m o d p ) g^{t} \equiv 1(\bmod p) g t ≡ 1 ( m o d p )
(3) g φ ( p ) ≡ 1 ( m o d p ) g^{\varphi(p)} \equiv 1 (\bmod p) g φ ( p ) ≡ 1 ( m o d p ) 成立,g k φ ( p ) ≡ 1 ( m o d p ) g^{k \varphi(p)} \equiv 1 (\bmod p) g k φ ( p ) ≡ 1 ( m o d p ) 恒成立,换句话说,t = k ⋅ φ ( p ) t = k \cdot \varphi(p) t = k ⋅ φ ( p )
(4) 根据阶的性质2,因为 t t t 是关于 ( m o d p α ) (\bmod p^{\alpha}) ( m o d p α ) 的阶,所以 t ∣ φ ( p α ) t \mid \varphi(p^{\alpha}) t ∣ φ ( p α )
综上所述,k φ ( p ) ∣ φ ( p α ) k\varphi(p) \mid \varphi(p^{\alpha}) k φ ( p ) ∣ φ ( p α ) ,但是 φ ( p α ) = p α − 1 ( p − 1 ) , φ ( p ) = p − 1 \varphi(p^{\alpha}) = p^{\alpha - 1}(p-1), \ \varphi(p) = p-1 φ ( p α ) = p α − 1 ( p − 1 ) , φ ( p ) = p − 1
(5) 可以推出 k ∣ p α − 1 k \mid p^{\alpha - 1} k ∣ p α − 1 ,换句话说,k = p β , β ⩽ α − 1 k = p^{\beta}, \ \beta \leqslant \alpha - 1 k = p β , β ⩽ α − 1
这样,(3) 就可以写成 t = p β ( p − 1 ) , β ⩽ α − 1 t = p^{\beta}(p-1), \ \beta \leqslant \alpha - 1 t = p β ( p − 1 ) , β ⩽ α − 1
只需要证明 β = α − 1 \beta = \alpha - 1 β = α − 1 即可,等价于对于 β ⩽ α − 2 \beta \leqslant \alpha - 2 β ⩽ α − 2 ,以下推出的一些结论都不成立
如果有 β ⩽ α − 2 \beta \leqslant \alpha - 2 β ⩽ α − 2 ,那么 t = p β ( p − 1 ) ∣ p α − 2 ( p − 1 ) = φ ( p α − 1 ) t = p^{\beta}(p-1) \mid p^{\alpha-2}(p-1) = \varphi(p^{\alpha - 1}) t = p β ( p − 1 ) ∣ p α − 2 ( p − 1 ) = φ ( p α − 1 )
如果假设成立,我们有 φ ( p α − 1 ) \varphi(p^{\alpha - 1}) φ ( p α − 1 ) 是 t t t 的倍数,t t t 又是 g g g 的阶 ( m o d p α ) (\bmod p^{\alpha}) ( m o d p α ) ,所以有
g φ ( p α − 1 ) ≡ 1 ( m o d p α ) g^{\varphi(p^{\alpha - 1})} \equiv 1(\bmod \ p^{\alpha}) g φ ( p α − 1 ) ≡ 1 ( m o d p α ) ,接下来只要证明这个结论不成立 即可
引理3 ,如果 g g g 是模 p p p 的一个原根使得 g p − 1 ≢ 1 ( m o d p 2 ) g^{p-1} \not \equiv 1(\bmod \ p^2) g p − 1 ≡ 1 ( m o d p 2 ) ,那么对于 α ⩾ 2 \alpha \geqslant 2 α ⩾ 2 ,都有
g φ ( p α − 1 ) ≢ 1 ( m o d p α ) \displaystyle g^{\varphi \left(p^{\alpha - 1} \right)} \not \equiv 1(\bmod \ p^{\alpha}) g φ ( p α − 1 ) ≡ 1 ( m o d p α )
这里对 α \alpha α 归纳,考虑 ( m o d p α + 1 ) (\bmod \ p^{\alpha+1}) ( m o d p α + 1 ) 时候的情形
显然 α = 2 \alpha = 2 α = 2 时成立,先根据 Fermat-Euler 定理,有 g φ ( p α − 1 ) ≡ 1 ( m o d p α − 1 ) g^{\varphi \left(p^{\alpha - 1} \right)} \equiv 1 (\bmod \ p^{\alpha - 1}) g φ ( p α − 1 ) ≡ 1 ( m o d p α − 1 ) 恒成立
(1) 写成一般形式,g φ ( p α − 1 ) = 1 + k p α − 1 g^{\varphi \left(p^{\alpha - 1} \right)} = 1 + k p^{\alpha - 1} g φ ( p α − 1 ) = 1 + k p α − 1 ,根据归纳,g φ ( p α − 1 ) ≢ 1 ( m o d p α ) \displaystyle g^{\varphi \left(p^{\alpha - 1} \right)} \not \equiv 1(\bmod \ p^{\alpha}) g φ ( p α − 1 ) ≡ 1 ( m o d p α )
可以推出 p ∤ k p \nmid k p ∤ k
(2) 将 (1) 中两边同时 p p p 次方,p φ ( p α − 1 ) = φ ( p α ) p \varphi(p^{\alpha - 1}) = \varphi(p^{\alpha}) p φ ( p α − 1 ) = φ ( p α ) ,我们有
g φ ( p α ) = ( 1 + k p α − 1 ) p = 1 + k p α + ( p 2 ) k 2 p 2 ( α − 1 ) + r p 3 ( α − 1 ) + ⋯ \displaystyle g^{\varphi \left(p^{\alpha} \right)} = (1+kp^{\alpha - 1})^p = 1 + kp^{\alpha} + \binom{p}{2}k^2 p^{2(\alpha - 1)} + r p^{3(\alpha - 1)} + \cdots g φ ( p α ) = ( 1 + k p α − 1 ) p = 1 + k p α + ( 2 p ) k 2 p 2 ( α − 1 ) + r p 3 ( α − 1 ) + ⋯
注意到 α ⩾ 2 \alpha \geqslant 2 α ⩾ 2 ,那么 2 α − 1 ⩾ α + 1 , 3 α − 3 ⩾ α + 1 2\alpha - 1 \geqslant \alpha + 1, \ 3\alpha - 3 \geqslant \alpha + 1 2 α − 1 ⩾ α + 1 , 3 α − 3 ⩾ α + 1 ,往后的项 p p p 的幂指都比 α + 1 \alpha + 1 α + 1 大
g φ ( p α ) ≡ 1 + k p α ( m o d p α + 1 ) \displaystyle g^{\varphi \left(p^{\alpha} \right)} \equiv 1 + kp^{\alpha} (\bmod \ p^{\alpha + 1}) g φ ( p α ) ≡ 1 + k p α ( m o d p α + 1 )
因为 p ∤ k p \nmid k p ∤ k ,所以 k p α ≢ 0 ( m o d p α + 1 ) kp^{\alpha} \not \equiv 0 (\bmod p^{\alpha + 1}) k p α ≡ 0 ( m o d p α + 1 ) ,从而 g φ ( p α ) ≢ 1 ( m o d p α + 1 ) \displaystyle g^{\varphi(p^{\alpha})} \not \equiv 1(\bmod \ p^{\alpha +1}) g φ ( p α ) ≡ 1 ( m o d p α + 1 ) ,归纳成立
模 p α p^{\alpha} p α 原根存在定理
如果 g g g 是模 p p p 的一个原根,那么对于所有 α ⩾ 1 \alpha \geqslant 1 α ⩾ 1 ,g g g 也是模 p α p^{\alpha} p α 的原根当且仅当 g p − 1 ≢ 1 ( m o d p 2 ) g^{p-1} \not \equiv 1(\bmod \ p^2) g p − 1 ≡ 1 ( m o d p 2 )
模 2 p α 2p^{\alpha} 2 p α 原根存在定理
如果 p p p 是一个奇素数并且 α ⩾ 1 \alpha \geqslant 1 α ⩾ 1 ,那么存在模 p α p^{\alpha} p α 的一个奇数原根 g g g
并且每一个这样的 g g g 也是模 2 p α 2p^{\alpha} 2 p α 的原根
(1) 如果 g g g 是模 p α p^{\alpha} p α 的一个原根,那么 g + p α g + p^{\alpha} g + p α 也是模 p α p^{\alpha} p α 的一个原根
但是 g , g + p α g, g+p^{\alpha} g , g + p α 其中一个一定是奇数,所以模 p α p^{\alpha} p α 的奇数原根总是存在的
(2) 不妨设模 p α p^{\alpha} p α 的一个奇数原根 是 g g g ,并且 g g g 的阶是 f ( m o d 2 p α ) f \ (\bmod \ 2p^{\alpha}) f ( m o d 2 p α ) (关于模 ( 2 p α ) (2p^{\alpha}) ( 2 p α ) 的阶)
我们只需要证明 f = φ ( 2 p α ) f = \varphi(2p^{\alpha}) f = φ ( 2 p α )
(3) 首先根据阶的性质,有 f ∣ φ ( 2 p α ) f \mid \varphi(2p^{\alpha}) f ∣ φ ( 2 p α ) ,根据不完全积性,φ ( 2 p α ) = φ ( 2 ) φ ( p α ) = φ ( p α ) \varphi(2p^{\alpha}) = \varphi(2) \varphi(p^{\alpha}) = \varphi(p^{\alpha}) φ ( 2 p α ) = φ ( 2 ) φ ( p α ) = φ ( p α )
首先有 f ∣ φ ( p α ) f \mid \varphi(p^{\alpha}) f ∣ φ ( p α )
(4) 另一方面,根据阶的定义,g f ≡ 1 ( m o d 2 p α ) g^{f} \equiv 1 (\bmod \ 2p^{\alpha}) g f ≡ 1 ( m o d 2 p α ) ,又可以推出 g f ≡ 1 ( m o d p α ) g^{f} \equiv 1 (\bmod \ p^{\alpha}) g f ≡ 1 ( m o d p α )
g g g 首先是模 p α p^{\alpha} p α 的一个原根,所以 g φ ( p α ) ≡ 1 ( m o d p α ) g^{\varphi(p^{\alpha})} \equiv 1 (\bmod \ p^{\alpha}) g φ ( p α ) ≡ 1 ( m o d p α ) ,从而 φ ( p α ) ∣ f \varphi(p^{\alpha}) \mid f φ ( p α ) ∣ f
综上所述,f = φ ( p α ) = φ ( 2 p α ) f = \varphi(p^{\alpha}) = \varphi(2p^{\alpha}) f = φ ( p α ) = φ ( 2 p α )
其他情况原根不存在
原根不存在定理 给定 m ⩾ 1 m\geqslant 1 m ⩾ 1 ,m m m 的形式不是 { 1 , 2 , 4 , p α , 2 p α } \{1, 2, 4, p^{\alpha}, 2p^{\alpha}\} { 1 , 2 , 4 , p α , 2 p α } ,其中 p p p 是一个奇素数
则对于任意一个满足 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 的 a a a ,我们有 a φ ( m ) 2 ≡ 1 ( m o d m ) \displaystyle a^{\frac{ \varphi(m) } {2}} \equiv 1 (\bmod \ m) a 2 φ ( m ) ≡ 1 ( m o d m )
m m m 没有原根
先来证明 α ⩾ 3 \alpha \geqslant 3 α ⩾ 3 时,模 2 α 2^{\alpha} 2 α 没有原根,只要证明 x φ ( 2 α ) / 2 ≡ 1 ( m o d 2 α ) , x \displaystyle x^{\varphi(2^{\alpha}) / 2} \equiv 1 (\bmod \ 2^{\alpha}), x x φ ( 2 α ) / 2 ≡ 1 ( m o d 2 α ) , x 为奇数
也就是 φ ( 8 ) = 2 3 − 2 2 = 4 \varphi(8) = 2^3 - 2^2 = 4 φ ( 8 ) = 2 3 − 2 2 = 4 ,x 2 ≡ 1 ( m o d 8 ) x^2 \equiv 1 (\bmod \ 8) x 2 ≡ 1 ( m o d 8 ) ,这是成立的,因为 ( 2 k + 1 ) 2 = 4 k ( k + 1 ) + 1 (2k + 1)^2 = 4k(k+1) + 1 ( 2 k + 1 ) 2 = 4 k ( k + 1 ) + 1
而 k ( k + 1 ) k(k+1) k ( k + 1 ) 一定是偶数,所以 x 2 = ( 2 k + 1 ) 2 ≡ 1 ( m o d 8 ) x^2 = (2k+1)^2 \equiv 1 (\bmod 8) x 2 = ( 2 k + 1 ) 2 ≡ 1 ( m o d 8 )
解下来对 α \alpha α 归纳,归纳假设有 f ( x ) = x φ ( 2 α ) = ( 1 + 2 α ⋅ t ) 2 = 1 + 2 α + 1 t + 2 2 α t 2 \displaystyle f(x) = x^{\varphi(2^{\alpha})} = (1+2^{\alpha}\cdot t)^2 = 1 + 2^{\alpha+1}t + 2^{2\alpha}t^2 f ( x ) = x φ ( 2 α ) = ( 1 + 2 α ⋅ t ) 2 = 1 + 2 α + 1 t + 2 2 α t 2
因为 2 α ⩾ α + 1 2\alpha \geqslant \alpha + 1 2 α ⩾ α + 1 ,所以 f ( x ) ≡ 1 ( m o d 2 α + 1 ) f(x) \equiv 1 (\bmod 2^{\alpha+1}) f ( x ) ≡ 1 ( m o d 2 α + 1 ) ,而 x φ ( 2 α ) = x φ ( 2 α + 1 ) / 2 x^{\varphi(2^{\alpha})} = x^{\varphi(2^{\alpha + 1}) / 2} x φ ( 2 α ) = x φ ( 2 α + 1 ) / 2 ,归纳假设成立
接下来考虑一般情况,设 m = 2 α p 1 α 1 p 2 α 2 ⋯ p s α s \displaystyle m = 2^{\alpha} p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_s^{\alpha_s} m = 2 α p 1 α 1 p 2 α 2 ⋯ p s α s
根据条件,s = 1 s = 1 s = 1 时,α ⩾ 2 \displaystyle \alpha \geqslant 2 α ⩾ 2 ,另外 α = { 0 , 1 } \alpha = \{0, 1\} α = { 0 , 1 } 时,s ⩾ 2 s \geqslant 2 s ⩾ 2
φ ( m ) = φ ( 2 α ) φ ( p 1 α 1 ) φ ( p 2 α 2 ) ⋯ φ ( p s α s ) \displaystyle \varphi(m) = \varphi(2^{\alpha}) \varphi(p_1^{\alpha_1}) \varphi(p_2^{\alpha_2}) \cdots \varphi(p_s^{\alpha_s}) φ ( m ) = φ ( 2 α ) φ ( p 1 α 1 ) φ ( p 2 α 2 ) ⋯ φ ( p s α s )
我们希望证明 对于 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,有 a φ ( m ) / 2 ≡ 1 ( m o d m ) \displaystyle a^{\varphi(m) / 2} \equiv 1 (\bmod m) a φ ( m ) / 2 ≡ 1 ( m o d m )
考虑模 p 1 α 1 p_1^{\alpha_1} p 1 α 1 ,取其原根 g g g ,即 g φ ( p 1 α 1 ) ≡ 1 ( m o d p 1 α 1 ) g^{\varphi(p_1^{\alpha_1})} \equiv 1(\bmod \ p_1^{\alpha_1}) g φ ( p 1 α 1 ) ≡ 1 ( m o d p 1 α 1 )
因为 g g g 是原根,< g , g 2 , ⋯ , g φ ( p 1 α 1 ) > \left<g, g^2, \cdots, g^{\varphi(p_1^{\alpha_1})} \right> ⟨ g , g 2 , ⋯ , g φ ( p 1 α 1 ) ⟩ 取遍 p 1 α 1 p_1^{\alpha_1} p 1 α 1 的简化剩余系
所以存在 g k ≡ a ( m o d p 1 α 1 ) , ( 1 ⩽ a ⩽ p 1 α 1 − 1 ) g^{k} \equiv a (\bmod p_1^{\alpha_1}), \quad (1 \leqslant a \leqslant p_1^{\alpha_1} - 1) g k ≡ a ( m o d p 1 α 1 ) , ( 1 ⩽ a ⩽ p 1 α 1 − 1 )
a φ ( m ) / 2 ≡ g k φ ( m ) / 2 ≡ g t φ ( p 1 α 1 ) ( m o d p 1 α 1 ) \displaystyle a^{\varphi(m) / 2} \equiv g^{k\varphi(m) / 2} \equiv g^{t\varphi(p_1^{\alpha_1})} (\bmod \ p_1^{\alpha_1}) a φ ( m ) / 2 ≡ g k φ ( m ) / 2 ≡ g t φ ( p 1 α 1 ) ( m o d p 1 α 1 )
其中 t = k φ ( 2 α ) φ ( p 1 α 1 ) φ ( p 2 α 2 ) ⋯ φ ( p s α s ) 2 \displaystyle t = k \varphi(2^{\alpha}) \varphi(p_1^{\alpha_1}) \varphi(p_2^{\alpha_2}) \cdots \frac{\varphi(p_s^{\alpha_s}) } {2} t = k φ ( 2 α ) φ ( p 1 α 1 ) φ ( p 2 α 2 ) ⋯ 2 φ ( p s α s )
如果 α ⩾ 2 \alpha \geqslant 2 α ⩾ 2 ,那么 φ ( 2 α ) \varphi(2^{\alpha}) φ ( 2 α ) 是偶数,t ∈ Z t \in \mathbb{Z} t ∈ Z
如果 α = { 0 , 1 } \alpha = \{0, 1\} α = { 0 , 1 } ,那么 s ⩾ 2 s \geqslant 2 s ⩾ 2 ,φ ( p 2 α 2 ) \varphi(p_2^{\alpha_2}) φ ( p 2 α 2 ) 是偶数,t ∈ Z t \in \mathbb{Z} t ∈ Z
所以可以得到 g t ⋅ φ ( p 1 α 1 ) ≡ 1 ( m o d p 1 α 1 ) g^{t \cdot \varphi(p_1^{\alpha_1})} \equiv 1(\bmod p_1^{\alpha_1}) g t ⋅ φ ( p 1 α 1 ) ≡ 1 ( m o d p 1 α 1 ) ,因为 g g g 是原根
对其他 p i p_i p i 同理,所以有 a φ ( m ) / 2 ≡ 1 ( m o d p i α i ) \displaystyle a^{\varphi(m)/2} \equiv 1 (\bmod \ p_i^{\alpha_i}) a φ ( m ) / 2 ≡ 1 ( m o d p i α i )
下面只需要证明这个同余式对模 2 α 2^{\alpha} 2 α 成立即可,因为要求 ( a , m ) = 1 (a, m) = 1 ( a , m ) = 1 ,所以对模 2 α 2^{\alpha} 2 α ,要求 a a a 为奇数
a φ ( 2 α ) ≡ 1 ( m o d 2 α ) \displaystyle a^{\varphi(2^{\alpha})} \equiv 1(\bmod \ 2^{\alpha}) a φ ( 2 α ) ≡ 1 ( m o d 2 α ) ,这个在第一种情况时候已经证明过了,要求 α ⩾ 3 \alpha \geqslant 3 α ⩾ 3
又因为 φ ( 2 α ) ∣ φ ( m ) \varphi(2^{\alpha}) \mid \varphi(m) φ ( 2 α ) ∣ φ ( m ) ,所以 a φ ( m ) / 2 ≡ 1 ( m o d 2 α ) a^{\varphi(m) / 2} \equiv 1 (\bmod \ 2^{\alpha}) a φ ( m ) / 2 ≡ 1 ( m o d 2 α ) ,此时 α ⩾ 3 \alpha \geqslant 3 α ⩾ 3
若 α ⩽ 2 \alpha \leqslant 2 α ⩽ 2 ,我们有 s ⩾ 1 s \geqslant 1 s ⩾ 1 ,所以此时 φ ( m ) = φ ( 2 α ) φ ( p 1 α 1 ) ⋯ φ ( p s α s ) = 2 k ⋅ φ ( 2 α ) \varphi(m) = \varphi(2^{\alpha})\varphi(p_1^{\alpha_1}) \cdots \varphi(p_s^{\alpha_s}) = 2k \cdot \varphi(2^{\alpha}) φ ( m ) = φ ( 2 α ) φ ( p 1 α 1 ) ⋯ φ ( p s α s ) = 2 k ⋅ φ ( 2 α )
此时仍然有 φ ( 2 α ) ∣ φ ( m ) / 2 \varphi(2^{\alpha}) \mid \varphi(m) / 2 φ ( 2 α ) ∣ φ ( m ) / 2
综上所述,将结果全部乘起来,证明完毕
比赛杂题
Educational Codeforces Round 123 (Rated for Div. 2)
C.Increase Subarray Sums
题目大意,给定一个数组 < a > \left<a \right> ⟨ a ⟩ ,f ( k ) f(k) f ( k ) 表示你可以在数组 a a a 中任意取 k k k 个不同位置 ,把这些位置上的数都加上 x x x
修改完成后,< a > \left<a \right> ⟨ a ⟩ 中连续一段和 的最大值记为 f ( k ) f(k) f ( k )
输出 < f ( 0 ) , f ( 1 ) , ⋯ , f ( n ) > \left< f(0), f(1), \cdots, f(n) \right> ⟨ f ( 0 ) , f ( 1 ) , ⋯ , f ( n ) ⟩ ,注意长度为 0 0 0 的子数组也算一部分
根据数据范围,O ( n 2 ) O(n^2) O ( n 2 ) 复杂度的算法就可以通过
先预处理出长度为 l e n = [ 1 , 2 , ⋯ , n ] len = [1, 2, \cdots, n] l e n = [ 1 , 2 , ⋯ , n ] 的连续子段,它们的和的最大值,记为 maxsum ( l e n ) \text{maxsum}(len) maxsum ( l e n )
然后考虑修改 i i i 个数,i ∈ [ 0 ⋯ n ] i \in [0\cdots n] i ∈ [ 0 ⋯ n ] ,记修改 i i i 个数得到的最大子段和为 ans ( i ) \text{ans}(i) ans ( i )
有 2 2 2 种情况,第一种,有一个很长的段 ( l e n > i ) (len > i) ( l e n > i ) ,它的子段和很大,那么我们肯定要从 l e n len l e n 个数中,随便选 i i i 个修改
修改后的最大子段和,就是 maxsum ( l e n ) + i ⋅ x \text{maxsum}(len) + i \cdot x maxsum ( l e n ) + i ⋅ x
第二种就是,有可能最大子段和,出现在很小的一段 ( l e n < i ) (len < i) ( l e n < i ) 中,那么这 l e n len l e n 个数,肯定是需要修改的
最大子段和为 S = maxsum ( l e n ) + l e n ⋅ x S = \text{maxsum}(len) + len \cdot x S = maxsum ( l e n ) + l e n ⋅ x ,还需要修改 i − l e n i - len i − l e n 个数,怎么办
实际上这剩下的 i − l e n i - len i − l e n 个数可以在其他位置任意修改,不影响已经得到的最大子段和 S S S
因为长度为 l e n len l e n 的段 [ l , r ] [l, r] [ l , r ] 已经是原来的最大子段和了,如果 l e n < i len < i l e n < i ,那么你选 i i i 个数都增加 x x x
相当于在原来的图像上,这些数同时往上平移 x x x ,[ l , r ] [l, r] [ l , r ] 仍然还是最大值
综上所述,我们只要枚举要修改的个数 i ∈ < 0 , 1 , ⋯ n > i \in \left<0, 1, \cdots n \right> i ∈ ⟨ 0 , 1 , ⋯ n ⟩ ,同时枚举可能取到最大子段和的区间长度
len ∈ [ 1 , n ] \text{len} \in [1, n] len ∈ [ 1 , n ] ,ans ( i ) = max ( maxsum ( l e n ) + x ⋅ min ( i , l e n ) ) \text{ans}(i) = \max(\text{maxsum}(len) + x \cdot \min(i, len)) ans ( i ) = max ( maxsum ( l e n ) + x ⋅ min ( i , l e n ) )
D. Cross Coloring
题目大意,给你一个 n × m n \times m n × m 的棋盘,q q q 次操作,每次给你 ( x , y ) (x, y) ( x , y ) ,你可以把 x x x 行 y y y 列都染上 k k k 种颜色中的任何一种
每一次染色,都会覆盖 之前的颜色,问 q q q 次操作之后,最终在棋盘中,有几种不同的颜色
这种问题,首先考虑什么时候,存在某一个格子 ( a , b ) (a, b) ( a , b ) ,它能够被染上 [ 1 ⋯ k ] [1\cdots k] [ 1 ⋯ k ] 中任意一种颜色,即 ( k 1 ) \displaystyle \binom{k}{1} ( 1 k ) 种
满足这种条件的格子,可以把它看成是自由的
自由格子 ( a , b ) (a, b) ( a , b ) 出现的充要条件如下
假设 ( a , b ) (a, b) ( a , b ) 在第 i i i 次第一次被染色 ,那么它在之后的 [ i + 1 ⋯ n ] [i+1\cdots n] [ i + 1 ⋯ n ] 次染色中,都不会被覆盖
换句话说,如果第 i i i 次染色,存在至少一个自由格子,那么答案 a n s ← a n s ⋅ ( k 1 ) \displaystyle ans \leftarrow ans \cdot \binom{k}{1} a n s ← a n s ⋅ ( 1 k )
直接做比较麻烦,先考虑简单情况,对于最后一次操作,即第 q q q 次,它可以选 ( k 1 ) \displaystyle\binom{k}{1} ( 1 k ) 的任意一种颜色
这些颜色都会出现在棋盘上,有 k k k 种,接下来考虑第 q − 1 q-1 q − 1 次操作
q − 1 q-1 q − 1 次操作染色的格子中,与第 q q q 次操作重合的那些格子 ,不需要重复统计
其他格子呢?同样可以选 ( k 1 ) \displaystyle\binom{k}{1} ( 1 k ) 的任意一种
经过这样分析,我们可以从 i ∈ [ q → 1 ] i \in [q\to 1] i ∈ [ q → 1 ] 反着来遍历
每一次操作的时候,都标记一下它覆盖了哪些格子 ,不妨设当前进行第 i i i 次操作
第 i i i 次染色 x x x 行 y y y 列的时候,对于之前的 [ i + 1 , i + 2 , ⋯ q ] [i+1, i+2, \cdots q] [ i + 1 , i + 2 , ⋯ q ] 操作已经标记过的格子,我们不做统计
如果能找到一个未标记的格子,那么它可以涂 ( k 1 ) \displaystyle \binom{k}{1} ( 1 k ) 的任意一种颜色
将其统计到答案中,a n s ← a n s ⋅ ( k 1 ) \displaystyle ans \leftarrow ans \cdot \binom{k}{1} a n s ← a n s ⋅ ( 1 k )
算法实现就比较简单了,假设第 i i i 次操作 ( x , y ) (x, y) ( x , y ) ,如果 x x x 行之前没有操作过
并且至少存在一列未被标记,或者对称地, y y y 列没有被操作过,至少存在一行未被标记,那么就对答案有 ( k 1 ) \displaystyle \binom{k}{1} ( 1 k ) 的贡献