在之前的文章中,我们已经确立了在有限域 Fq 中,如果 k 整除 q−1:
- 存在一个唯一的 k 阶子群—— k 次单位根。
- 该子群的生成元 ω 是本原 k 次单位根,可表示为 ω=gkq−1,其中 g 是 Fq∗ 的生成元。
- k 是使得 ωk≡1 成立的最小正整数。
在本文中,我们将探讨 Fq 中本原单位根 ω 的一个关键性质:只要 k 是偶数,ω2k 就同余于 −1。
动机
在某些应用中,我们希望找出特定 k 的不同 k 次单位根之间的关系。更准确地说,我们想确定哪些单位根是其他单位根的加法逆元。
在域 Fq 中,如果 k 整除 q−1,则 k 次单位根可以写成
{1,ω,ω2,...,ωk−1}
其中 ω 是本原 k 次单位根。
有人可能会问:我们能很容易地找到 −ω 或 −ω2 吗?答案是肯定的。让我们来看以下这个我们稍后将证明的事实:如果 k 是偶数,那么 ω2k≡−1。
让我们利用这个事实。因为 −ω 与 (−1)ω 相同,并且我们知道 −1≡ω2k,所以我们可以得出
−ω=(−1)ω=ω2kω=ω2k+1
同样的方法也可以用来求 −ω2。我们可以得出
−ω2=(−1)ω2=ω2kω2=ω2k+2
这对于任意 i 可以推广为
−ωi=ω2k+i
这就确立了 k 次单位根之间的关系。
举个例子,让我们考虑 8 次单位根,
{1,ω,ω2,ω3,ω4,ω5,ω6,ω7}
利用所得出的关系,8 次单位根可以写成
{1,ω,ω2,ω3,−1,−ω,−ω2,−ω3}
为了使之成立,我们只需证明对于任意 k,都有 ω2k≡−1。我们现在就来进行证明。
在有限域 Fq 中 −1 的含义是什么
在 Fq 中,符号 −a 表示 a 的加法逆元,满足 a+(−a)=0。
例如,在 F7 中,由于 6+1=7≡0(mod7),我们说 6 是 1 的加法逆元,并记作
−1≡6(mod7).
对于任意有限域 Fq,由于 (q−1)+1=q≡0(modq),1 的加法逆元总是 q−1:
−1≡q−1(modq).
现在让我们来看看 ω2k 的例子。
F17 中 k 次单位根里 ω2k 的例子
在下面的例子中,我们使用生成元 g=3 作为乘法群 F17∗ 的生成元。因为在 F17 中 16 是 1 的加法逆元,所以我们有:
−1≡16(mod17)
情形 k=4
一个本原 4 次单位根是 ω=gkq−1=g416=34≡13(mod17)。
在这里,ω2k=ω24=ω2=132≡16≡−1。
因此,我们可以得出结论,当 k=4 时 ω2k≡−1。
情形 k=8
现在 ω=gkq−1=g816=32≡9(mod17) 是一个本原 8 次单位根。
对于 k=8,2k=4,我们有 ω2k=94≡16≡−1。
F97 中 k 次单位根里 ω2k 的例子
在有限域 F97 中,我们有 q−1=97−1=96。1 的加法逆元是:
−1≡96(mod97)
元素 g=5 是乘法群 F97∗={1,2,…,96} 的一个生成元。如下所示,galois 库提供了一种利用 primitive_element 属性来寻找此生成元的便捷方法:
import galois
GF = galois.GF(97) # Define the field
GF.primitive_element # Returns GF(5, order=97)
对于 k=32,我们得到的 ω 为
ω=gkq−1=g3296=53=125≡28(mod97).
令 2k=16,我们使用以下 Python 代码计算 ω2k=2816:
result = 28**16 % 97
print(f"28^16 % 97 = {result}") # Output: 96
因此:
ω16=2816≡96≡−1(mod97).
我们得出结论,在 F97 中,对于 k=32,ω2k≡−1。
Python 代码
以下 Python 代码用于检查在域 Fq 中是否满足 ω2k≡−1。这里用它来测试 F17 中 k=8 且 ω=9 时的该性质。你也可以在 F97 中使用 k=32 且 ω=28 来测试,或者尝试你选择的其他有效组合。
import galois
def check_omega_half_is_minus_one(q, omega, k):
GF = galois.GF(q)
if k % 2 != 0:
raise ValueError("k must be even")
omega_half = GF(omega) ** (k // 2)
return omega_half == GF(q-1)
# Example usage:
q = 17
k = 8
omega = 9
result = check_omega_half_is_minus_one(q, omega, k)
print(f"For ω={omega} and k={k}: ω^(k/2) == -1 is {result} in F_{q}")
数学证明
设 g 为 Fq∗ 的生成元。这等同于说 g 是一个本原 (q−1) 次单位根。
设 ω=gkq−1 为有限域 Fq 中的本原 k 次单位根。我们将证明 ω2k≡−1。
证明的思路是说明 ω2k 只能是 1 或 −1。随后我们将排除 ω2k 为 1 的可能性,从而只留下 −1 这唯一选项。
证明:
让我们取 ω2k 的平方。其计算如下:
(ω2k)2=ωk≡1
最后一个等式基于 ω 是本原 k 次单位根这一事实。
由于 ω2k 的平方为 1,即 (ω2k)2≡1,那么 ω2k 只能是 1 或 −1,因为只有 12 或 (−1)2 等于 1。
下面我们来证明它不可能是 1。
将 ω=gkq−1 代入 ω2k,我们得到:
ω2k=(gkq−1)2k=g2q−1
因为 g 是一个本原 (q−1) 次单位根,使得 gr≡1 成立的最小正整数 r 为 r=q−1。
换言之,不存在小于 q−1 的整数 r 使得 gr≡1。由于 2q−1<q−1,g2q−1 不可能是 1。因此,唯一的可能性就是 ω2k 等于 −1。
总结
- 如果 ω 是有限域 Fq 中的本原 k 次单位根,那么对于偶数 k,有 ω2k≡−1。
- 利用这一性质,我们得到 −ωi=ω2k+i,等价的说法是,ωi 是 ωk/2+i 的加法逆元。
下一章 将介绍一种可视化方法,使这些要点更容易记忆。