在之前的文章中,我们已经确立了在有限域 中,如果 整除 :
- 存在一个唯一的 阶子群—— 次单位根。
- 该子群的生成元 是本原 次单位根,可表示为 ,其中 是 的生成元。
- 是使得 成立的最小正整数。
在本文中,我们将探讨 中本原单位根 的一个关键性质:只要 是偶数, 就同余于 。
动机
在某些应用中,我们希望找出特定 的不同 次单位根之间的关系。更准确地说,我们想确定哪些单位根是其他单位根的加法逆元。
在域 中,如果 整除 ,则 次单位根可以写成
其中 是本原 次单位根。
有人可能会问:我们能很容易地找到 或 吗?答案是肯定的。让我们来看以下这个我们稍后将证明的事实:如果 是偶数,那么 。
让我们利用这个事实。因为 与 相同,并且我们知道 ,所以我们可以得出
同样的方法也可以用来求 。我们可以得出
这对于任意 可以推广为
这就确立了 次单位根之间的关系。
举个例子,让我们考虑 8 次单位根,
利用所得出的关系,8 次单位根可以写成
为了使之成立,我们只需证明对于任意 ,都有 。我们现在就来进行证明。
在有限域 中 的含义是什么
在 中,符号 表示 的加法逆元,满足 。
例如,在 中,由于 ,我们说 是 的加法逆元,并记作
对于任意有限域 ,由于 , 的加法逆元总是 :
现在让我们来看看 的例子。
中 次单位根里 的例子
在下面的例子中,我们使用生成元 作为乘法群 的生成元。因为在 中 是 的加法逆元,所以我们有:
情形
一个本原 4 次单位根是 。
在这里,。
因此,我们可以得出结论,当 时 。
情形
现在 是一个本原 8 次单位根。
对于 ,,我们有 。
中 次单位根里 的例子
在有限域 中,我们有 。 的加法逆元是:
元素 是乘法群 的一个生成元。如下所示,galois 库提供了一种利用 primitive_element 属性来寻找此生成元的便捷方法:
import galois
GF = galois.GF(97) # Define the field
GF.primitive_element # Returns GF(5, order=97)
对于 ,我们得到的 为
令 ,我们使用以下 Python 代码计算 :
result = 28**16 % 97
print(f"28^16 % 97 = {result}") # Output: 96
因此:
我们得出结论,在 中,对于 ,。
Python 代码
以下 Python 代码用于检查在域 中是否满足 。这里用它来测试 中 且 时的该性质。你也可以在 中使用 且 来测试,或者尝试你选择的其他有效组合。
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}")
数学证明
设 为 的生成元。这等同于说 是一个本原 次单位根。
设 为有限域 中的本原 次单位根。我们将证明 。
证明的思路是说明 只能是 或 。随后我们将排除 为 的可能性,从而只留下 这唯一选项。
证明:
让我们取 的平方。其计算如下:
最后一个等式基于 是本原 次单位根这一事实。
由于 的平方为 ,即 ,那么 只能是 或 ,因为只有 或 等于 。
下面我们来证明它不可能是 。
将 代入 ,我们得到:
因为 是一个本原 次单位根,使得 成立的最小正整数 为 。
换言之,不存在小于 的整数 使得 。由于 , 不可能是 。因此,唯一的可能性就是 等于 。
总结
- 如果 是有限域 中的本原 次单位根,那么对于偶数 ,有 。
- 利用这一性质,我们得到 ,等价的说法是, 是 的加法逆元。
下一章 将介绍一种可视化方法,使这些要点更容易记忆。