利用模n同余类乘群初探素数的分布规律

利用模n同余类乘群初探素数的分布规律

由模 n 同余类集合构成的 n 阶加群

按模 n 同余分类,整数 Z 被分为 n 个子集,即 [1]n、[2]n、...、[n]n,简记为 [1]、[2]、...、[n]。 Zn = {[1], [2], ..., [n]} 称为模 n 同余类集合。易知 Zn 是以 [n] 为单位元(零元)的 n 阶加群.

以 Z8 为例,[1] + [7] = [8],即 [1] 和 [7] 互为逆元(负元),同样互为逆元的还有 [2] 和 [6]、[3] 和 [5];[4] + [4] = [8],即 [4] 的逆元是自身,易知 {[8], [4]} 是 Z8 的唯一 2 阶真子群,且为正规子群,Z8 关于子群 {[8], [4]} 的陪集分解也是唯一的,即:

Z8 = {[8], [4]} ∪ {[1], [5]} ∪ {[2], [6]} ∪ {[3], [7]}

同样 {[8], [4], [2], [6]} 是 Z8 的唯一 4 阶真子群,且为正规子群,Z8 关于该子群的陪集分解也是唯一的,即:

Z8 = {[8], [4], [2], [6]} ∪ {[1], [5], [3], [7]}

模 n 同余类乘群

当 n 不为 1 时,Zn 不能构成乘群,这是因为 [1] 成了单位元,而零元 [n] 没有逆元,即 [n]·[x] = [1] 无解.

模 n 同余类乘群 Z'n 是 Zn 的子集,其定义为:

Z'n = {[k] ∈ Zn | 1 ≤ k ≤ n, gcd(k, n) = 1}

考察 Z'24

由欧拉函数公式可知,|Z'24| = φ(24) = φ(3)·φ(23) = 2·(23 - 22) = 8,由定义可以具体列出 Z'24,即:

Z'24 = {[1], [5], [7], [11], [13], [17], [19], [23]}

容易发现其中的同余类的常规代表数中,除了 1 之外都是素数,且 24 的素因数只有 2 和 3,这实际上提供了一种求区间 [1, 24] 内有多少个素数的可行方法.

记 区间 [m, n] 内的素数个数为 S(m, n),因为和 24 互素的最小素数为 5,而 5×5 > 24,所以

S(1, 24) = φ(24) - 1 + 2 = 9

考察 Z'48 和 Z'96

Z'48 中有 φ(48) = φ(3)·φ(24) = 2·(24 - 23) = 16 个同余类,且其常规代表数中非素数有 1、5×5、5×7,共计 3 个,于是

S(1, 48) = φ(48) - 3 + 2 = 15

Z'96 中有 φ(96) = 32 个同余类,且其常规代表数中非素数有 ,即 1、5×5、5×7、7×7、5×11、5×13、7×11、7×13、5×17,共计 9 个,于是

S(1, 96) = φ(96) - 8 + 2 = 25

归纳与分析

由上面考察的 n = 24, 48, 96 三种情形,便得到了两组等长区间的对比数据:

9 = S(1, 24) > S(25, 48) = S(1, 48) - S(1, 24) = 15 - 9 = 6

15 = S(1, 48) > S(49, 96) = 25 - 15 = 10

不难发现这一类情形的一般形式为:

n = 3·2k,k ≥ 1     (I)

此时有 φ(n) = 2k

k = 1 时,n = 6,Z'6 = {[1], [5]}

k = 2 时,n = 12,Z'12 = {[1], [5], [7], [11]}

上面具体考察的分别为 k = 3, 4, 5 的情形。

一般地,由 φ(3·2k) = 2k 及 [1] 是同余类乘群的单位元以及 2 和 3 为素数,可以给出区间 [1, 3·2k] 内素数个数的一个上界代数式,即

S(1, 3·2k) ≤ 2k + 1,k ≥ 1            ①

由上面的结果,可知当 k = 1, 2, 3 时 ① 取等号。但随着 k 值增大,Z'n 的常规代表数中就会有越来越多的合数,导致 S(1, 3·2k) 与 2k + 1 的差距越来越大,即总体趋势上素数分布是越来越稀疏的.

当 n 较大时,由 ① 给出的上界大约为 n/3. 可以对 (I) 加以改进,比如取:

n = 7·5·3·2k,k ≥ 1     (II)

此时有 φ(n) = 6·4·2k,进而可知

S(1, 7·5·3·2k) ≤ 6·4·2k + 3,k ≥ 1            ②

当 n 较大时,由 ② 给出的上界大约为 8n/35。

在 (II) 中取 k = 1,即有 n = 7·5·3·2 = 210,利用上面的方法来求一下 S(1, 210) 的准确值:

φ(210) = 6·4·2·1 = 48,与 210 互素且小于 210 的非素数有 1、11·11=121、11·13=143、13·13=169、11·17=187、11·19=209,共计 6 个,于是

S(1, 210) = 48 - 6 + 4 = 46

这与上面求 S(1, 96) 的计算量差不多. 不过当 n 大到一定程度(比如 n ≥ 10000),求 S(1, n) 的计算量不可避免会变得相当大.

考察 Z'24 的子群

Z'24 = {[1], [5], [7], [11], [13], [17], [19], [23]}

由 5·5 = 25 = 24 + 1 ≡ 1 (mod 24),知 [5]·[5] = [1],于是 {[1], [5]} 是 Z'24 的一个 2 阶子群. 同样,由

7·7 = 49 = 24·2 + 1

11·11 = 121 = 24·5 + 1

13·13 = 169 = 24·7 + 1

17·17 = 289 = 24·12 + 1

19·19 = 361 = 24·15 + 1

23·23 = 528 = 24·22 + 1

可知,Z'24 中每个非单位元都和 [1] 构成 Z'24 的一个 2 阶子群. 方便起见,把这些 2 阶子群分别记为 H5、H7、H11、H13、H17、H19、H23.

用 H5 可给出 Z'24 的一个陪集分解,即:

Z'24  = {[1], [5]} ∪ {[7], [11]} ∪ {[13], [17]} ∪ {[19], [23]}

这个分解里蕴含着素数的局部分布规律,用如下的矩阵表示更加直观:

1    5
7    11            (U)
13  17            (V)
19   23

从单行看,右边的数是左边的数加 4;从单列看,下面的数是上一行的数加 6. 就是说,从素数 5 开始,重复作加 2 和加 4 运算,每次加法运算就得到下一个素数,这个规律到 23 之后就打破了,因为 23 + 2 = 25 是合数.

同样,用 H7 也可给出 Z'24 的一个陪集分解,即:

Z'24  = {[1], [7]} ∪ {[5], [11]} ∪ {[13], [19]} ∪ {[17], [23]}

对应的分解矩阵为:

1    7
5    11            (tU)
13  19            (tV)
17   23

如上面的桃色和梅色高亮所示,两种分解的矩阵内部的两个 2 阶方阵分别都是互为转置关系.

用 H11 给出 Z'24 的一个陪集分解为:

Z'24  = {[1], [11]} ∪ {[5], [7]} ∪ {[13], [23]} ∪ {[17], [19]}

对应的分解矩阵为:

1    11
5     7            (P)
13   23          (Q)
17   19

这里的 P 和 Q,实际上就是 tU 和 tV 的第二列的两个元素分别换位而得.

用 H13 给出 Z'24 的一个陪集分解为:

Z'24  = {[1], [13]} ∪ {[5], [17]} ∪ {[7], [19]} ∪ {[11], [23]}

对应的分解矩阵为:

1    13
5    17          (M)
7    19          (N)
11   23

用 H17 给出 Z'24 的一个陪集分解为:

Z'24  = {[1], [17]} ∪ {[5], [13]} ∪ {[7], [23]} ∪ {[11], [19]}

对应的分解矩阵为:

1    17
5    13          (R)
7    23          (T)
11  19

这里的 R 和 T,实际上就是 M 和 N 的第二列的两个元素分别换位而得.

用 H19 给出 Z'24 的一个陪集分解为:

Z'24  = {[1], [19]} ∪ {[5], [23]} ∪ {[7], [13]} ∪ {[11], [17]}

对应的分解矩阵为:

1    19
5    23          (A)
7    13          (B)
11   17

用 H23 给出 Z'24 的一个陪集分解为:

Z'24  = {[1], [23]} ∪ {[5], [19]} ∪ {[7], [17]} ∪ {[11], [13]}

对应的分解矩阵为:

1    23
5    19          (C)
7    17          (D)
11   13

这里的 C 和 D,实际上就是 A 和 B 的第二列的两个元素分别换位而得. 

容易验证,上述各个分解矩阵里的第一行加上其余任意一行即构成 Z'24 的一个 4 阶子群,一共有 7 个,即

 

{[1], [5], [7], [11]},{[1], [5], [13], [17]},{[1], [5], [19], [23]}

{[1], [7], [13], [19]},{[1], [7], [17], [23]}

{[1], [11], [13], [23]},{[1], [11], [17], [19]}

考察 Z'48 的子群

由定义,容易知道:

Z'48 = {[1], [5], [7], [11], [13], [17], [19], [23], [25], [29], [31], [35], [37], [41], [43], [47]}

48 的倍数有 48、96、144、192、240、288、336、384、432、480 等.

Z'48 中满足 [x]·[x] = 1 的有 [7]、[17]、[23]、[25]、[31]、[41]、[47],共 7 个,即 Z'48 有 7 个2 阶子群.

用 {[1], [7]} 给出 Z'48 的一个陪集分解为:

Z'48  = {[1], [7]} ∪ {[5], [35]} ∪ {[11], [29]} ∪ {[13], [43]} ∪ {[17], [23]} ∪ {[19], [37]} ∪ {[25], [31]} ∪ {[41], [47]} 

对应的分解矩阵的转置矩阵为:

1   5   11  13  17  19  25  41
7  35  29  43  23  37  31  47

从这里看,4 到 48 之间的素数不像前面发现的 4 到 24 之间的素数那样有着清晰可见的分布规律.

上一篇:11.字符串+内存函数


下一篇:迷宫