在同余理论中,模 的互质同余类构成一个乘法群,称为整数模 n 乘法群(multiplicative group of integers modulo n)。这个群是数论的基石,在密码学、整数分解和素性测试中均有运用。

整数模 n 乘法群用符号表示为 ,或者

整数模 n 乘法群的元素

是一个有限群。其集合中每个元素不是一个单一整数,而是一个同余类,整数 的同余类表示为 或者

如果 ,那么 。也就是说一个数 如果与 互质,那么 里面所有的数都与 互质。因此我们可以从 中的每个同余类里面抽出一个数来代表对应的同余类。例如 ,我们可以将 写成下面任意一种形式



通常我们用每个同余类中最小的正整数来表示那个类,这样形成的集合也叫做最小简约余数系。上面提到的 就是这样一个例子。

后面我们都用模 最小简约余数系来代表群 的集合。

证明

要证明 是一个群,只需要证明它满足群的四大公理即可。

封闭性:如果 ,那么 ,因此封闭性成立。

结合性:由于整数乘法的属性,群的结合性自然成立。

存在单位元:1 与任何数互质, 总是包含 1 的同余类,因此 1 的同余类为单位元

存在逆元:整数模 乘法群的逆元定义为对于给定集合中的整数 ,逆元 满足 。找出逆元 等价于求解方程 。根据裴蜀定理,因为,所以一定存在 使改方程成立。且 互质,所以 的逆元 也属于该群。

为循环群

不一定是循环群。 为循环群的条件为: 等于 或者 ,其中 是奇质数, 为正整数。

为循环群时,其生成元的个数为 ,也就是说模 的本原根的个数为

证明:

在前一篇文章中我们证明了,有限循环群 中的任一元素 的阶可表示为

因此要使 为生成元,必须满足 。因此 中生成元的个数为

欧拉函数 给出了小于 且与 互质的数的个数。因此可知 的阶就为 。由此可以得到 生成元的个数为

当 n 为质数

为质数时,我们通常用 来表示 。可以证明 总是循环群。其生成元的个数为

如果 能整除 ,那么 中存在 阶的生成器。

例子:当 时。

时,我们可以求出 的阶为

由于 的阶 ,因此能整除 12 的数有:1,2,3,4,6,12。 一定存在子群的阶等于这些数,而且 子群的阶只可能是这些数中的一个。我们可以计算出对于每个阶的子群,其生成元的个数:

  • 1 阶:,有 1 个。
  • 2 阶:,有 1 个。
  • 3 阶:,有 2 个。
  • 4 阶:,有 2 个。
  • 6 阶:,有 2 个。
  • 12 阶:,有 4 个。

其中 生成元的个数。

把各阶子群的生成元个数加起来, 正好等于 。这是因为 中每个元素的阶是唯一的,因此每个子群的生成元个数加起来恰好等于 元素的个数。这也从侧面证明了欧拉函数的一个性质:所有能整除 的数的欧拉函数和为 。表示为:

其中 为所有能整除 的数。

为了验证我们的结果,下面给出了 中每个元素生成的子群和阶:

1 { 1 } 1
2 { 2,4,8,3,6,12,11,9,5,10,7,1 } 12
3 { 3,9,1 } 3
4 { 4,3,12,9,10,1 } 6
5 { 5,12,8,1 } 4
6 { 6,10,8,9,2,12,7,3,5,4,11,1 } 12
7 { 7,10,5,9,11,12,6,3,8,4,2,1 } 12
8 { 8,12,5,1 } 4
9 { 9,3,1 } 3
10 { 10,9,12,3,4,1 } 6
11 { 11,4,5,3,7,12,2,9,8,10,6,1} 12
12 { 12,1 } 2

另外可以看到一个有意思的性质:元素 的阶始终为 2。这是因为

由于质数 的群 在密码学中更为常用,因此我们后面着重讨论这个群。

寻找生成元

通过上述分析,给我们寻找 的生成元一些启发。一个简单的想法是,从 开始,到 结束,对每个数 ,测试对于每个小于且能整除 的数 ,如果都满足 ,那么就认为这个数 是生成元。

但是这种方法中找出每个小于且能整除 的数 比较麻烦,需要先将 做质因数分解,再将这些质因数排列组合求乘积,还要考虑去重复。

有一个更简单的方式是将 做质因数分解得到 ,其中 的所有不同质因数。对于元素 ,我们只需要测试

如果对于每个不同质因数 都满足上述条件的话,元素 就是生成元。虽然这个算法,对每个数的测试次数变少了。但是这个算法的难点在于对于一个很大的数 ,分解 的质因数将会非常困难

如何挑选数来测试

如果我们的任务是只需要找到一个生成元,那么该如何从 挑选数来做上面提到的测试呢。一个简单的办法是从 2 开始,一个一个测试,直到找到一个为止。

还有一种方法是随机从 里面挑选一个。那么随机挑中一个的概率有多大呢?我们知道生成元的个数为 ,而 元素的总个数为 。因此选中的概率为:

做质因数分解得到 ,根据欧拉函数的乘法公式得到:

从上述公式可以观察到,如果 的质因数 越大,那么随机选中生成元的概率就越大。

例如 ,因此随机挑选到生成元的概率为

找到余下的生成元

只要找到一个生成元,我们可以通过另一种方法来找到剩下的生成元。假如我们找到 为生成元,根据循环群的性质,其它的生成元一定可以表示为 ,根据前面的公式我们可以得到 的阶为

因此 要想为生成元,它的阶 必须等于 ,那么 必须互质,也就是

对于 的例子来说,当我们测试得到 2 为生成元后,我们找出所有与 12 互质的数为:5、7、11,由此可以求出其它 3 个生成元:



虽然这个方法看起来很简单,但是找出所有小于且与 互质的数还是很困难。

参考文献

[1] The multiplicative group modulo p: https://www.di-mgt.com.au/multiplicative-group-mod-p.html
[2] CYCLICITY OF : https://kconrad.math.uconn.edu/blurbs/grouptheory/cyclicmodp.pdf