模p的原根
我们先从模运算下的乘法结构说起。对于一个素数 \(p\),我们考虑集合 \(\{1, 2, ..., p-1\}\),这个集合在模 \(p\) 乘法下构成一个群,称为模 \(p\) 乘法群,记作 \((\mathbb{Z}/p\mathbb{Z})^\times\)。这个群是循环群,意味着存在一个元素,它的幂次能够生成整个群。这个特殊的生成元,就是我们今天要学习的核心概念——原根。
第一步:理解阶的概念
为了精确定义原根,我们需要先理解“阶”这个概念。
对于一个与素数 \(p\) 互质的整数 \(a\)(即 \(1 \leq a \leq p-1\)),我们考虑 \(a\) 的幂次模 \(p\) 的结果:\(a^1 \mod p, a^2 \mod p, a^3 \mod p, ...\)。
根据费马小定理,我们有 \(a^{p-1} \equiv 1 \pmod{p}\)。因此,这个幂次序列最终会回到 1,并开始循环。
我们定义:使得 \(a^k \equiv 1 \pmod{p}\) 成立的最小正整数 \(k\),称为 \(a\) 模 \(p\) 的阶,记作 \(\text{ord}_p(a)\)。
- 关键性质:\(a\) 模 \(p\) 的阶 \(k\) 一定是 \(p-1\) 的约数。这是因为,阶是最小的满足同余式的正整数,而 \(p-1\) 是满足同余式的另一个正整数,最小者必然整除后者。
第二步:原根的定义
现在我们可以给出原根的精确定义了。
如果存在一个整数 \(g\)(\(1 \leq g \leq p-1\)),它的模 \(p\) 的阶恰好等于 \(p-1\),即 \(\text{ord}_p(g) = p-1\),那么我们称 \(g\) 是模 \(p\) 的一个原根。
这意味着什么?
这意味着 \(g\) 的幂次:
\(g^1, g^2, g^3, ..., g^{p-1} \mod p\)
恰好是集合 \(\{1, 2, ..., p-1\}\) 的一个排列,两两不同,且遍历了整个模 \(p\) 乘法群。没有任何一个更小的正整数幂次能使 \(g^k \equiv 1 \pmod{p}\)。
第三步:一个具体的例子
让我们以素数 \(p=7\) 为例来寻找原根。我们需要检查 \(a = 1, 2, 3, 4, 5, 6\) 的阶。
- \(a=1\):\(1^1 \equiv 1\),阶为 1,不是原根。
- \(a=2\):
- \(2^1 \equiv 2\)
- \(2^2 \equiv 4\)
- \(2^3 \equiv 8 \equiv 1 \pmod{7}\)
- 阶为 3(因为 3 整除 6,但 3 ≠ 6),不是原根。
- \(a=3\):
- \(3^1 \equiv 3\)
- \(3^2 \equiv 9 \equiv 2\)
- \(3^3 \equiv 6\)
- \(3^4 \equiv 18 \equiv 4\)
- \(3^5 \equiv 12 \equiv 5\)
- \(3^6 \equiv 15 \equiv 1 \pmod{7}\)
- 幂次产生了序列 3, 2, 6, 4, 5, 1,这正是集合 {1,2,3,4,5,6}。阶为 6。所以,3 是模 7 的一个原根。
- \(a=4\):\(4^1 \equiv 4, 4^2 \equiv 16 \equiv 2, 4^3 \equiv 8 \equiv 1\),阶为 3,不是原根。
- \(a=5\):
- \(5^1 \equiv 5\)
- \(5^2 \equiv 25 \equiv 4\)
- \(5^3 \equiv 20 \equiv 6\)
- \(5^4 \equiv 30 \equiv 2\)
- \(5^5 \equiv 10 \equiv 3\)
- \(5^6 \equiv 15 \equiv 1 \pmod{7}\)
- 幂次产生了序列 5, 4, 6, 2, 3, 1,也是整个集合。阶为 6。所以,5 也是模 7 的一个原根。
- \(a=6\):\(6^1 \equiv 6, 6^2 \equiv 36 \equiv 1\),阶为 2,不是原根。
这个例子说明,一个模数 \(p\) 的原根可能不止一个。事实上,如果模 \(p\) 有原根,那么它一共有 \(\phi(p-1)\) 个原根,其中 \(\phi\) 是你学过的欧拉函数。对于 \(p=7\),\(p-1=6\),\(\phi(6)=2\),确实有两个原根(3 和 5)。
第四步:原根的存在性与重要性
一个非常重要的定理(由高斯证明)是:每个素数 \(p\) 都有原根。 实际上,更一般地,模 \(m\) 有原根当且仅当 \(m = 1, 2, 4, p^k, 2p^k\)(其中 \(p\) 是奇素数)。
原根的重要性在于它为我们提供了一个“对数”系统。因为原根 \(g\) 的幂次可以生成整个乘法群,所以对于任意一个与 \(p\) 互质的数 \(a\),都存在唯一的指数 \(k\)(\(0 \le k < p-1\)),使得 \(a \equiv g^k \pmod{p}\)。这个指数 \(k\) 就称为 \(a\) 的以 \(g\) 为底的离散对数(或指数)。这为解决许多数论问题(如你之前学过的指数同余方程)提供了强有力的工具。