Elementary Number Theory

Table of Contents

1. 素数和最大公因子

1.1. 素数

定义:素数是大于 1 的正整数,并且除了 1 和它本身不能被其他正整数所整除。例如整数 2,3,5,13,101163 等都是素数。

1.2. 算术基本定理(The Fundamental Theorem of Arithmetic)

算术基本定理是一个重要的结果,它说明素数是整数的乘法构成单元。

定理(算术基本定理):每个大于 1 的正整数都可以被唯一地写成素数的乘积,在乘积中的素因子按照非降序排列。

有时算术基本定理被扩展应用到整数 1, 即 1 被看作是唯一地被写成素数的空乘积,

例题:一些正整数的分解如下:240=222235=2435289=1717=1721001=71113

整数分解中把素因子组合成幂的形式被称为素幂分解(prime-power factorization)。

1.3. 最大公因子

定义(最大公因子):两个不同时为零的整数 a,b 的最大公因子就是指能同时整除 a,b 的最大的整数。a,b 的最大公因子记为 (a,b) ,或者记为 gcd(a,b)

定义(互素):如果两个整数 a,b 的最大公因子 gcd(a,b)=1 ,那么这两个数就被称为互素的。

1.4. 欧几里得算法

欧几里得算法(Euclidean Algorithm)是一种快速寻找最大公因子的算法。

定理(欧几里得算法):整数 ab>0 ,令 r0=a,r1=b 。如果我们做带余除法得到 rj=rj+1qj+1+rj+2 ,且 0<rj+2<rj+1,j=0,1,2,n2 ,且有 rn+1=0 ,那么 gcd(a,b)=rn ,即最后一个非零余数。

从定理中我们看到通过带余除法,在每一步中被除数和除数被更小的数代替,这些更小的数实际上是每一步中的除数和余数,运算直到余数为零时终止,这一系列的运算产生了一系列的等式,而最大公因子就是最后一个非零的余数。

例题:求 gcd(252,198) 。利用欧几里得算法,其步骤如下: 252=1198+54198=354+3654=136+1836=218 我们将这些步骤总结在下表中:

j rj rj+1 qj+1 rj+2
0 252 198 1 54
1 198 54 3 36
2 54 36 1 18
3 36 18 2 0

最后一个非零余数(在最后一列倒数第二行的那个数)就是 252 和 198 的最大公因子,因此 gcd(252,198)=18

1.5. 线性丢番图方程

考虑下面的问题:一个人想购买 510 美元的旅游支票,支票只有 20 美元和 50 美元两种,那么每一种应该买多少?如果我们令 x 表示他应该买的 20 美元支票的数量, y 表示 50 美元支票的数量,那么就应满足方程 20x+50y=510 。为了解决这一问题,我们应该求出这个方程的所有解,其中 x,y 为非负整数。

类似的问题有,当一个妇女想邮寄一个包裹。邮局的职员测定邮寄这个包裹的费用是 83 美分,但是只有 6 美分和 15 美分的邮票,那么是否有这两种邮票的组合后的面值恰好可以来邮寄这个包裹呢?为了回答这个问题,我们先令 x 表示 6 美分邮票的数量,令 y 表示 15 美分邮票的数量,那么有 6x+15y=83 ,其中 x,y 是非负整数。

当我们需要求解特定方程的整数解的时候,那么就得到了一个丢番图方程,这些方程是根据古希腊数学家丢番图(Diophantus)而命名的,他写下了一些方程并将解限定在有理数域上。 方程 ax+by=c ,其中 a,b,c 是整数,被称为关于两个变量的线性丢番图方程。

定理:设 a,b 是整数且 d=gcd(a,b) 。如果 dc ,那么方程 ax+by=c 没有整数解。如果 dc ,那么存在无穷多个整数解。另外,如果 x=x0,y=y0 是方程的一个特解,那么所有的解可以表示为 x=x0+(b/d)n,y=y0(a/d)n 其中 n 是整数。

例题:求线性丢番图方程 15x+6y=7 的解。因为 gcd(15,6)=3 ,但是 37 。所以根据上面定理,这个线性丢番图方程没有整数解。

例题:求线性丢番图方程 21x+14y=70 的解。因为 gcd(21,14)=7 ,而且 770 。所以根据上面定理,这个线性丢番图方程存在无穷多个整数解。容易知道 x0=10,y0=10 是方程的一个特解。根据上面定理,这个线性丢番图方程的所有解为 x=10+(14/7)n,y=10(21/7)n ,其中 n 是整数。

2. Congruences

2.1. 同余定义

定义: ab 是整数,且 m(ab) ,则称 abm 同余。abm 同余,则记 ab(modm) 。若 m(ab) ,则记 ab(modm) ,并称 am 不同余于 b

例题:因为 9(224) ,所以 22=4(mod9) 。另外,因为 9(135) ,所以 135(mod9)

2.2. 同余相关定理

定理:设 m 是正整数。模 m 的同余满足下面的性质:

  1. 自反性(Reflexive Property)。若 a 是整数,则 aa(modm)
  2. 对称性(Symmetric Property)。若 ab 是整数,且 ab(modm) ,则 ba(modm)
  3. 传递性(Transitive Property)。若 a,bc 是整数,且 ab(modm)bc(modm) ,则 ac(modm)

由上面的定理可知,整数的集合被分成 m 个不同的集合,这些集合称为“模 m 剩余类(同余类)”,每个同余类中的任意两个整数都是模 m 同余的。

例题:求模 4 的 4 个同余类。 84048(mod4)73159(mod4)622610(mod4)513711(mod4)

这 4 个同余类可分别记为 0,1,2,3 ,如果要体现模数时,这 4 个同余类也可记为 04,14,24,34

定理:若 a,b,cm 是整数, m>0,ab(modm) ,则:

  1. a+cb+c(modm)
  2. acbc(modm)
  3. acbc(modm)

上面定理表明,一个同余式两边同时加、减、乘上同一个整数,其同余关系不变。那么除法呢?也就是说一个同余式两边除以一个整数,同余关系还会保持吗?答案是不一定。我们看个例子:显然 7242(mod6) 是成立的,但我们不能在同余式两边同时消去因子 2 ,因为 74(mod6) 。下面的定理给出了在同余式两边同时除以一个整数仍会保持的一个同余关系。

定理: a,b,cm 是整数, m>0,d=gcd(c,m) ,且有 acbc(modm) ,则: ab(modm/d)

例题:因为 148(mod6) ,且 gcd(2,6)=2 ,所以有 14/28/2(mod6/2) ,即 74(mod3)

推论:若 a,b,cm 是整数, m>0,gcd(c,m)=1 ,且有 acbc(modm) ,则: ab(modm)

定理:若 a,b,c,dm 是整数, m>0,ab(modm)cd(modm) ,则:

  1. a+cb+d(modm)
  2. acbd(modm)
  3. acbd(modm)

2.3. 线性同余方程

x 是未知整数,形如 axb(modm) 的同余式称为“一元线性同余方程”。

首先注意到,若 x=x0 是同余方程 axb(modm) 的一个解,且 x1x0(modm) ,则 ax1ax0b(modm) ,所以 x1 也是一个解。因此,若一个模 m 同余类的某个元素是解,则此同余类的所有元素都是解。于是,我们会问模 mm 个同余类中有多少个给出方程的解:这相当于问方程有多少个模 m 不同余的解。下面的定理告诉我们一元线性同余方程何时有解,在有解时方程有多少模 m 不同余的解。

定理:设 a,bm 是整数, m>0,gcd(a,m)=d 。若 db ,则 axb(modm) 无解。若 db ,则 axb(modm) 恰有 d 个模 m 不同余的解。

推论:若 am>0 互素,且 b 是整数,则线性同余方程 axb(modm) 有模 m 的唯一解。

例题:找出 9x12(mod15) 的所有解。首先注意到 gcd(9,15)=3312 ,所以这个同余方程恰有 3 个不同余的解。它的解显然会满足线性丢番图方程 9x15y=12 ,根据节 1.5 中介绍的定理,我们可以通过先找到一个特解,再加上 15/gcd(9,15)=5 的适当倍数来求得所有的解。容易验证 x0=8,y0=4 是线性丢番图方程的一个特解,由节 1.5 中的定理可知,x=8+(15/gcd(9,15))k=8+5k 是线性丢番图方程的所有解(其中 k 是整数)。由前面的定理知 9x12(mod15) 恰有 3 个不同余的解,取恰当的 k 可找到 3 个模 15 不同余解 x=3,x=8,x=13 。从而,这个同余方程的所有解为 x=3+15n,x=8+15n,x=13+15n ,其中 n 为整数。

2.4. 中国剩余定理

中国剩余定理:设 m1,m2,,mr 是两两互素的正整数,则同余方程组 xa1(modm1)xa2(modm2)xar(modmr) 有模 M=m1m2mr 的唯一解。记 Mi=M/mi ,设 ti=Mi1Mi 的模 mi 的数论倒数,即满足 tiMi1(modmi) ,则前面同余方程组的通解为 x=kM+i=1raitiMi ,其中 k 是整数。在模 M 的意义下,同余方程组只有一个解: x=i=1raitiMi(modM)

例题:求解《孙子算经》有个“物不知数”问题:

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

也就是说,一个整数除以三余二,除以五余三,除以七余二,求这个整数。

这里的线性同余方程组为: x2(mod3)x3(mod5)x2(mod7) 三个模数 m1=3,m2=5,m3=7 ,它们的乘积 M=m1m2m3=105 ,对应的 M1=M/3=35,M2=M/5=21,M3=M/7=15 ,可以计算出相应的数论倒数分别为 t1=2,t2=1,t3=1 ,所以同余方程组的通解为 x=kM+i=1raitiMi=105k+2235+3121+2115=105k+233 其中 k 为整数。 x 的最小正整数解 x=233(mod105)=23 ,这时 k=2

3. 特殊的同余式

3.1. Wilson's Theorem

威尔逊定理给出了判定一个自然数是否为素数充要条件。即 n 是素数的充要条件是: (n1)!+1n 的倍数。

1n20 时, (n1)!+1(modn) 的取值情况。从表中看,显然当 n 是素数时, (n1)!+1(modn) 确实为 0 ,也就是说当 n 是素数时, (n1)!+1 确实是 n 的倍数。

Table 1: (n1)!+1n 的倍数时(即第 3 列为 0 时), n 是素数
n (n1)! (n1)!+1(modn)
2 1 0
3 2 0
4 6 3
5 24 0
6 120 1
7 720 0
8 5040 1
9 40320 1
10 362880 1
11 3628800 0
12 39916800 1
13 479001600 0
14 6227020800 1
15 87178291200 1
16 1307674368000 1
17 20922789888000 0
18 355687428096000 1
19 6402373705728000 0
20 121645100408832000 1

一般把威尔逊定理描述为同余式的形式,即: 如果 p 是素数,则 (p1)!1(modp)

威尔逊定理的逆也成立,即: n 是正整数且 n2 ,如果 (p1)!1(modp) ,则 p 是素数。

3.2. Fermat's Little Theorem

费马小定理:如果 p 是素数, a 是整数,并且 pa (即 p 不是 a 的因子),则 ap11(modp)

比如, a=2,p=7 ,根据费马小定理有 2711(mod7)

3.3. Euler's Theorem

欧拉定理:如果 an 是互素的正整数,则有 aφ(n)1(modn)

我们知道,如果 n 是素数,则有 φ(n)=n1 。所以, 欧拉定理是费马小定理的更一般形式,它把费马小定理推广到了模不是素数的情形。

4. 乘性函数

定义(算术函数):定义在所有正整数上的函数称为算术函数。

定义(乘性函数): 算术函数 f 如果满足对任意两个互素的正整数 nm ,均有 f(mm)=f(m)f(n) ,就称为乘性函数(或积性函数),如果对任意两个正整数 nm ,均有 f(mn)=f(m)f(n) ,就称为完全乘性(或完全积性)函数。

例题:对所有 n ,函数 f(n)=1 是一个完全乘性函数,所以也是乘性函数,因为 f(mm)=1f(m)=1f(n)=1 ,从而有 f(mn)=f(m)f(n) ,类似地,函数 g(n)=n 是一个完全乘性函数,也是乘性函数,因为 g(mn)=mn=g(m)g(n)

定理:如果 f 是一个乘性函数,对任意正整数 n 有素数幂分解 n=p1a1p2a2psas ,那么 f(n)=f(p1a1)f(p2a2)f(psas)

证明:我们将基于整数 n 的素数幂分解中出现的不同素数的个数,用数学归纳法来证明这个定理。如果 n 在它的素数幂分解中只有一个素数,即存在某个素数使得 n=p1a1 ,那么定理显然成立。

假设定理对素数幂分解中出现 k 个不同素数的所有整数成立,现在假设整数 n 的素数幂分解中出现 k+1 个不同的素数,即 n=p1a1p2a2pkakpk+1ak+1 。因为 f 是乘性函数且 gcd(p1a1p2a2pkak,pk+1ak+1)=1 ,可推出 f(n)=f(p1a1p2a2pkak)f(pk+1ak+1) 。由归纳假设知 f(p1a1p2a2pkak)=f(p1a1)f(p2a2)f(pkak) ;从而得 f(n)=f(p1a1)f(p2a2)f(pkak)f(pk+1ak+1) 。证毕。

4.1. 欧拉 φ 函数

定义:在数论中,对正整数 n ,欧拉函数 φ(n) 是小于等于 n 的正整数中与 n 互素的数的数目。比如 φ(8)=4 ,因为小于等于 8 的正整数中,有 1,3,5,74 个数与 8 互素。

4.1.1. 欧拉 φ 函数相关定理 I

定理:如果 p 是素数,那么 φ(p)=p1 。反之,如果 p 是一个正整数且满足 φ(p)=p1 ,那么 p 是素数。

证明:如果 p 是素数,那么任意小于 p 的正整数都是与 p 互素的,因为有 p1 个这样的整数,所以有 φ(p)=p1 。反之,如果 p 不是素数,那么 p=1 或者 p 是合数。如果 p=1 ,那么 φ(p)p1 ,因为 φ(1)=1 。如果 p 是合数,那么 p 有一个因子 d 满足 1<d<p ,显然 pd 不互素,由于 p1 个整数 1,2,,p1 中至少有一个整数,即 d 是不和 p 互素的,那么 φ(p)p2 。因此,如果 φ(p)=p1 ,那么 p 必是素数。

定理:设 p 是素数, a 是一个正整数,那么 φ(pa)=papa1

证明:所有不超过 pa ,且和 p 不互素的正整数就是那些不超过 pa ,且能够被 p 整除的所有整数,即 kp ,其中 1kpa1 。因为恰有 pa1 个这样的整数,所以存在 papa1 个不超过 pa ,且和 pa 互素的正整数,所以 φ(pa)=papa1

例题:计算 φ(53),φ(210) 。利用上面定理有, φ(53)=5352=100 ,类似地有 φ(210)=21029=512

定理: 欧拉 φ 函数是个乘性函数。也就是说,设 mn 是互素的正整数,那么 φ(mn)=φ(m)φ(n)

4.1.2. 欧拉 φ 函数计算公式

n=p1a1p2a2pkak 为正整数 n 的素数幂分解,那么欧拉 φ 函数可以用下面公式计算: φ(n)=n(11p1)(11p2)(11pk)

例题:求 φ(100) 。利用 φ 函数计算公式,有: φ(100)=φ(2252)=100(112)(115)=40

例题:求 φ(720) 。利用 φ 函数计算公式,有: φ(720)=φ(24325)=720(112)(113)(115)=192

4.1.3. 欧拉 φ 函数相关定理 II

定理:设 n 是一个大于 2 的正整数,那么 φ(n) 是偶数。

定理:设 n 为一个正整数,那么 dnφ(d)=n 。也就是说, φ 函数在 n 的所有正因子处的值之和为 n

我们使用 n=18 来验证一下上面的定理。 n=18 的所有正因子有 1,2,3,6,9,18 ,容易分别计算出 φ(1)=1,φ(2)=1,φ(3)=2,φ(6)=2,φ(9)=6,φ(18)=6dnφ(d)=φ(1)+φ(2)+φ(3)+φ(6)+φ(9)+φ(18)=1+1+2+2+6+6=18=n

4.2. 因子和函数、因子个数函数

定义:因子和函数 σ 定义为整数 n 的所有正因子之和,记为 σ(n) 。比如 σ(12)=1+2+3+4+6+12=28

定义:因子个数函数 τ 定义为正整数 n 的所有正因子个数,记为 τ(n) 。比如 τ(12)=6

因子和函数、因子个数函数都是乘性函数。

5. Primitive Roots

5.1. 整数的阶

由欧拉定理可知,如果 an 是互素的正整数,则有 aφ(n)1(modn) ,从而可得到结论:如果 an 是互素的正整数,至少有一个正整数 x 会满足 ax1(modn)

定义:设 an 是互素的正整数, 我们把使得 ax1(modn) 成立的最小的正整数 x 称为 an 的阶(Order of a modulo n ),记为 ordna

例题:求解 27 的阶。我们计算 2 的各次幂对模 7 的运算: 212(mod7)224(mod7)231(mod7) 满足 2x1(mod7) 的最小正整数是 3 ,所以有 ord72=3

例题:求解 37 的阶。我们计算 3 的各次幂对模 7 的运算: 313(mod7)322(mod7)336(mod7)344(mod7)355(mod7)361(mod7) 满足 3x1(mod7) 的最小正整数是 6 ,所以有 ord73=6

5.1.1. 整数的阶相关定理

同余式 ax1(modn) 的全部解是多少?下面定理给出了答案。

定理:如果 an 是互素的整数且 n>0 ,那么正整数 x 是同余式 ax1(modn) 的一个解当且仅当 ordnax (也就是说 xordna 的倍数)。

证明:如果 ordnax ,那么 x=kordna ,其中 k 为正整数。因此有: ax=akordna=(aordna)k=1(modn) 反过来,如果 ax1(modn) ,首先用带余除法记为: x=qordna+r 其中 0r<ordna ,由上面等式有 ax=qqordna+r=(aordna)qarar(modn) 因为 ax=1(modn) ,所以 ar=1(modn) ,从不等式 0r<ordna 得, r=0 , 这是因为由定义知 y=ordna 是使得 ay=1(modn) 成立的最小的正整数。由 r=0 知, x=qordna ,故有 ordnax

例题:请问 x=10x=15 是否是方程 2x1(mod7) 的解。由节 5.1 中的例子,我们知道 ord72=3 ,因为 10 不是 3 的倍数,而 153 的倍数,所以根据上面的定理有 10 不是 2x1(mod7) 的解,而 152x1(mod7) 的解。

推论: 如果 an 是互素的整数,且 n>0 ,那么 ordnaφ(n) 这是一个很有用的推论,通俗讲就是 an 是互素时, an 的阶(即 ordna )一定是 φ(n) 的因子。

我们在计算整数的阶时,可以利用上面推论作为一种简便方法。下面的例子示范了相应的步骤。

例题:求解 517 的阶。首先注意到 φ(17)=16 ,因为 16 的因子只有 1,2,4,8,16 由推论知它们是 ord175 所有可能的取值。又因为 515(mod17)528(mod17)5413(mod17)5816(mod17)5161(mod17) 所以 ord175=16

5.2. 原根定义

在节 5.1.1 中提到了:如果 rn 是互素,则 rn 的阶(即 ordnr )一定是 φ(n) 的因子。显然 φ(n) 因子中最大的数就是 φ(n) 本身,我们把 ordnr 恰好等于 φ(n) 时的 r 称为模 n 的原根。

定义(原根):如果 rn 是互素的整数且 n>0 ,那么当 ordnr=φ(n) 时,称 r 是模 n 的原根(Primitive Root)。

例题:前面已证明 ord73=6 ,而 φ(7)=6 ,因此, 3 是模 7 的一个原根。相似的,由于 ord75=6 ,所以 5 也是模 7 的一个原根。这个例子告诉我们模 n 的原根可能不止一个。

2 展示了 n 为较小值时,模 n 的所有原根。

Table 2:n 的所有原根, n31
n primitive roots modulo n φ(n)
1 0 1
2 1 1
3 2 2
4 3 2
5 2, 3 4
6 5 2
7 3, 5 6
8   4
9 2, 5 6
10 3, 7 4
11 2, 6, 7, 8 10
12   4
13 2, 6, 7, 11 12
14 3, 5 6
15   8
16   8
17 3, 5, 6, 7, 10, 11, 12, 14 16
18 5, 11 6
19 2, 3, 10, 13, 14, 15 18
20   8
21   12
22 7, 13, 17, 19 10
23 5, 7, 10, 11, 14, 15, 17, 19, 20, 21 22
24   8
25 2, 3, 8, 12, 13, 17, 22, 23 20
26 7, 11, 15, 19 12
27 2, 5, 11, 14, 20, 23 18
28   12
29 2, 3, 8, 10, 11, 14, 15, 18, 19, 21, 26, 27 28
30   8
31 3, 11, 12, 13, 17, 21, 22, 24 30

从表中可以发现, 2 是很多数的最小原根。

5.3. 原根的存在性

并非所有整数都有原根。 比如模 8 就没有原根。因为比 8 小且与 8 互素的正整数只有 1,3,5,7 ,并且 ord81=1,ord83=ord85=ord87=2 ,因为 φ(8)=4 ,所以没有模 8 的原根。

在前 30 个正整数中, 2,3,4,5,6,7,9,10,11,13,14,17,18,19,22,23,25,26,2729 都有原根;而 8,12,15,16,20,21,24,2830 没有原根。这里不一一验证。

定理:正整数 nn>1 存在原根的充要条件是: n=2,4,pt,2pt 其中 p 是奇素数且 t 是正整数。

如果模 n 有原根,则它的原根个数为 φ(φ(n)) 。当 p 为素数时,模 p 的原根个数是 φ(φ(p))=φ(p1)

5.4. 原根性质

如果 g,n 是互素的正整数(即 gcd(g,n)=1 ),且 g 是模 n 的原根,那么原根 g整数模 n 乘法群 (Z/nZ) 的生成元。

例如,当 n=7 时,整数模 7 乘法群 (Z/7Z) 的元素是 {1,2,3,4,5,6} 。表 2 中介绍了模 7 的原根是 3,5 ,从而 3,5 都是整数模 7 乘法群 (Z/7Z) 的生成元。 3 是整数模 7 乘法群 (Z/7Z) 的生成元,其验证如下: 313(mod7)322(mod7)336(mod7)344(mod7)355(mod7)361(mod7) 5 是整数模 7 乘法群 (Z/7Z) 的生成元,其验证如下: 515(mod7)524(mod7)536(mod7)542(mod7)553(mod7)561(mod7)

下面看一个合数的例子。当 n=9 时,整数模 9 乘法群 (Z/9Z) 的元素是 {1,2,4,5,7,8} 。表 2 中介绍了模 9 的原根是 2,5 ,从而 2,5 都是整数模 9 乘法群 (Z/9Z) 的生成元。 2 是整数模 9 乘法群 (Z/9Z) 的生成元,其验证如下: 212(mod9)224(mod9)238(mod9)247(mod9)255(mod9)261(mod9) 5 是整数模 9 乘法群 (Z/9Z) 的生成元,其验证如下: 515(mod9)527(mod9)538(mod9)544(mod9)552(mod9)561(mod9)

5.5. 指数算术(离散对数)

由上一节的结论可知。 假设 g 是模 n 的一个原根,如果 a 是一个与 n 互素的整数,那么存在唯一的一个满足 1xφ(n) 的整数 x ,使得: gxa(modn) 成立,这个唯一的 x 称为“a 对模 n 的以 g 为底的指数”(或者称“离散对数”,后文会介绍为什么称为“离散对数”),记为 x=indga ,在这个记号中省略了模数 n

例题:设 n=7 ,前面介绍过 3 是模 7 的一个原根,有: 313(mod7)322(mod7)336(mod7)344(mod7)355(mod7)361(mod7) 如果使用 indga 记号的话,对于模 7 有: ind33=1ind32=2ind36=3ind34=4ind35=5ind31=6

例题:设 n=7 ,前面介绍过 5 也是模 7 的一个原根,有: 515(mod7)524(mod7)536(mod7)542(mod7)553(mod7)561(mod7) 如果使用 indga 记号的话,对于模 7 有: ind55=1ind54=2ind56=3ind52=4ind53=5ind51=6

5.5.1. 和对数相似的性质

定理:假设 g 是模 n 的一个原根,并且 ab 是均与 n 互素的整数,那么有:

  1. indg10(modφ(n))
  2. indg(ab)indga+indgb(modφ(n))
  3. indg(ak)kindga(modφ(n)) ,其中 k 是正整数。

从上面定理可知,模 n 的指数算术拥有和对数相似的性质(只需将等式用模 φ(n) 的同余式来代替),这就是称其为“离散对数”的原因。

下面通过例子来介绍一下这个定理。设 n=7φ(7)=6 ,前面介绍过 g=5 是模 7 的一个原根,上一节介绍了有: ind55=1ind54=2ind56=3ind52=4ind53=5ind51=6 下面用特例来验证上前面的定理:

  1. 对于定理第 1 条, ind510(modφ(7)) 显然是成立的,因为 60(mod6) 成立。
  2. 对于定理第 2 条,假设 a=2,b=3 ,式子 ind5(23)ind52+ind53(mod6) 也显然成立,因为左边 ind5(23)=ind56=3 ,而右边 ind52+ind53=4+5=93(mod6)
  3. 对于定理第 3 条,假设 a=3,k=4 ,式子 ind5(34)4ind53(mod6) 也会成立。因为左边 ind5(34)=ind581=ind54=2 (式子中从 814 是一个模 7 的运算),而右边 4ind53=45=202(mod6)

5.5.2. 寻找离散对数的困难

给定一个素数 p 和它的一个原根 g ,寻找整数 a 对模 p 的以 g 为底的指数(离散对数)问题称为离散对数问题。这个问题被认为和分解整数有一样的计算难度,即求 gxa(modp) 中的 x 比较困难。基于这个原因,它被用来作为很多公钥密码系统的基础,例如 ElGamal 密码系统和 Diffie-Hellman 公钥密码协议。

5.6. 原根的应用:ElGamal 密码系统

ElGamal 密码系统是 Taher Elgamal 在 1985 年发明的。其安全性依赖于求模大素数的离散对数的困难性。

下面以 Bob 通过 ElGamal 密码系统给 Alice 发送消息为例,介绍一下 ElGamal 密码系统。

Key Generation 过程如下:

  1. Alice 选取一个大素数 p ,找到模 p 的一个原根 g
  2. Alice 在 {2,,p1} 中随机选择一个数 x ,它就是私钥,只有 Alice 知道;
  3. Alice 计算出 h=gx(modp) ;公钥就是三元组 (p,g,h) ,公钥发送给 Bob。

Bob 加密消息 m (要求 2mp1 )的过程:

  1. Bob 在 {2,,p2} 中随机选择一个 k ,计算 c1=gk(modp)
  2. Bob 计算 c2=mhk(modp)
  3. Bob 发送密文二元组 (c1,c2) 给 Alice。

Alice 解密密文 (c1,c2) 的过程:

  1. Alice 使用公式 m=c1p1xc2(modp) 计算 (c1,c2) 对应的明文。

下面推导一下为什么使用 c1p1xc2(modp) 计算出来的值就是加密前的明文。 c1p1xc2=(gk)p1xmhk(modp)=(gp1)kgkxmgxk(modp)=(gp1)km(modp)=(1)km(modp)=m(modp) 上面推导中利用了欧拉定理:如果 gn 是互素的正整数,则 gφ(n)1(modn) 。还利用了欧拉 φ(n) 函数的性质:对于素数 pφ(p)=p1

5.6.1. ElGamal 实例

3 中通过实例介绍了 ElGamal 密码系统 Key Generation/加密/解密的详细步骤。

Table 3: ElGamal 实例
Alice on public network Bob
选择素数 p=2539 (为了演示方便使用了小素数)    
寻找模 p 的一个原根,这里取它的原根 g=2    
{2,,p1} 随机选择 x=14 为私钥    
计算 h=gx=2141150(modp)    
发送公钥 (p,g,h) 给 Bob (p,g,h)=(2539,2,1150) --> 收到公钥
    设待加密的明文 m=1520
    {2,,p2} 中随机选择一个 k=1443
    计算 c1=gk(modp)=21443(mod2539)2141(mod2539)
    计算 c2=mhk(modp)=152011501443(mod2539)216(mod2539)
收到密文 <-- (c1,c2)=(2141,216) 发送密文 (c1,c2) 给 Alice
计算明文 m=c1p1xc2=21412539114216(mod2539)=1520(mod2539)    

6. Quadratic Residues

二次剩余(Quadratic Residues)是数论中的一个重要概念。

6.1. 二次剩余定义

定义:设 n 是正整数, a 是整数且满足 gcd(a,n)=1 ,如果存在 xZn 满足: x2a(modn) 则, a 叫做“模 n 的二次剩余”; 否则(即不存在 xZn 满足上面要求), a 就叫做“模 n 的二次非剩余”。一般用 QRn 表示模 n 的二次剩余集合,用 QNRn 表示模 n 的二次非剩余集合。

例题:求解哪些数是模 11 的二次剩余。我们依次计算 Z11 中所有数(即 1,2,,10 )的平方,有 121(mod11)224(mod11)329(mod11)425(mod11)523(mod11)623(mod11)725(mod11)829(mod11)924(mod11)1021(mod11)
所以, 1,3,4,5,9 是模 11 的二次剩余,而 2,6,7,8,10 就是模 11 的二次非剩余。用集合记号表示就是 QR11={1,3,4,5,9}QNR11={2,6,7,8,10}

6.2. 二次剩余相关定理

定理:如果 p 是奇素数,则在集合 Zp={1,2,,p1} 所有元素中,模 p 的二次剩余恰有 (p1)/2 个,二次非剩余恰有 (p1)/2 个。也就是说 Zp 被分成大小相等的两个子集 QRpQNRp

上一节例子中介绍了 p 取素数 11 的情况,即 Z11 确实被分成大小相等的两个子集 QR11={1,3,4,5,9}QNR11={2,6,7,8,10}

定理:设 р 是素数, rp 的原根, a 是不被 р 整除的整数,若 indra 是偶数,则 ap 的二次剩余,若 indra 是奇数,则 ap 的二次非剩余。

前面介绍过, 5 是模 7 的原根,有: ind55=1ind54=2ind56=3ind52=4ind53=5ind51=6 根据上面定理有: ind55=1ind54=2因为 2 是偶数,所以 4 是 7 的二次剩余ind56=3ind52=4因为 4 是偶数,所以 2 是 7 的二次剩余ind53=5ind51=6因为 6 是偶数,所以 1 是 7 的二次剩余

6.3. Legendre Symbol

p 是奇素数,勒让德符号(Legendre Symbol)定义为: (ap)={1若 a 是 p 的二次剩余,1若 a 是 p 的二次非剩余,0若 a0(modp).

例题:给出 (a11)a=1,2,,10,11 的值。因为在节 6.1 中介绍过, 1,3,4,5,9 是模 11 的二次剩余,而 2,6,7,8,10 就是模 11 的二次非剩余。从而: (111)=(311)=(411)=(511)=(911)=1(211)=(611)=(711)=(811)=(1011)=1(1111)=0

6.4. 二次剩余的判定(欧拉判别法)

我们现在给出判定一个整数是否为某个素数的二次剩余的准则。这个准则在证明勒让德符号的性质时很有用。

欧拉判别法:设 p 是奇素数,则: (ap)ap12(modp)

例题:问 523 的二次剩余,还是二次非剩余?由于 23 是奇素数,我们可以采用欧拉判别法。因为 5(231)/2(mod23)22(mod23)1(mod23) ,所以 5 是否是 23 的二次非剩余。

6.4.1. 二次剩余判定问题(QRP)

前面介绍了,当 n 是奇素数时,使用欧拉判别法容易判定 xZn 是否是 n 的二次剩余。

但是,如果 n 是一个合数,而且不知道它的分解,那么目前没有有效的方法来判定 xZn 是否是 n 的二次剩余。这被称为二次剩余判定问题(Quadratic Residuosity Problem),它是一个计算困难问题。

公钥密码体制 Goldwasser–Micali Cryptosystem 的安全性基于二次剩余判定问题。

6.5. Jacobi Symbol(Legendre Symbol 的推广)

n 是正奇数,其素幂分解式为 n=p1t1p2t2pmtm ,则雅可比符号(Jacobi Symbol)定义为: (an)=(ap1)t1(ap2)t2(apm)tm 其中等式右边的符号是勒让德符号。

如果 n 是奇素数,显然雅可比符号和勒让德符号一致。

注:勒让德符号仅当 n 为奇素数时才有定义,而雅可比符号的定义放宽了这个限制,把 n 的范围扩展到了正奇数。所以,雅可比符号是勒让德符号的一种推广。

例题:求 (245)(109385) 。由雅可比符号的定义有: (245)=(2325)=(23)2(25)=(1)2(1)=1(109385)=(1095711)=(1095)(1097)(10911)=(45)(47)(1011)=(25)2(27)2(111)=(1)212(1)=1

6.5.1. 雅可比符号的性质

定理:设 n 是正奇数, ab 是与 n 互素的正整数,则:

  1. ab(modn) ,则 (an)=(bn)
  2. (abn)=(an)(bn)
  3. (1n)=(1)(n1)/2
  4. (2n)=(1)(n21)/8

雅可比符号的互反律:设 nm 是互素的正奇数,则: (nm)(mn)=(1)m12n12

7. Modular Square Roots

本节介绍如何计算模一个整数的平方根。即已知 an ,求满足条件 x2a(modn) 的非负数 x 。对应的解 x 可记为 x=defa(modn) 。显然,当 aQRn 时, x 有解,当 aQNRn 时, x 无解。

例:求 3(mod11) 的一个平方根。因为 523(mod11) ,所以 5 满足要求;又因为 623(mod11) ,所以 6 也满足要求。

例:求 7(mod11) 的一个平方根。 7QNR11 ,没有 x 会满足 x27(mod11)

7.1. 求模为素数时的平方根

7.1.1. 模为特殊情况 p3,7(mod8)

当模数 p 为素数,且满足 p3,7(mod8) 时。对于 aQRp ,则 x=a(p+1)/4(modp) 一定是 ap 的平方根。

例:求 5(mod11) 的一个平方根。因为模数 11 是素数,且 113(mod8) ,所以我们可以直接使用上面结论,即 x=5(11+1)/4(mod11)=45(mod11) 的一个平方根。容易验证这是对的,因为 425(mod11) 显然成立。

7.1.2. 模为特殊情况 p3(mod4)

当模数 p 为素数,且满足 p3(mod4) 时。对于 aQRp ,则 x=a(p+1)/4(modp) 一定是 ap 的平方根。

7.1.3. 求模为一般素数时的平方根

如果模 p 为一般素数, aQRp ,则可以使用 Tonelli–Shanks 算法求解 a(modp) 的平方根。

7.2. 求模为合数时的平方根

7.2.1. 已知合数分解

如果模 n 为合数,且已知合数的分解,那么使用图 1 所示算法可以求得模 n 的平方根。

elementary_number_theory_square_roots_composite.gif

Figure 1: n 为合数,且已知合数的分解,求模 n 的平方根

7.2.2. 未知合数分解

如果我们不知道模 n 的分解,则没有有效算法可以求得模 n 的平方根。在计算上,分解 n 和求模 n 的平方根是等价的。

8. 参考

本文主要摘自书籍:《初等数论及其应用(Elementary Number Theory and Its Applications)》和《现代密码学理论与实践(Modern Cryptography Theory and Practice)》

Author: cig01

Created: <2023-04-02 Sun>

Last updated: <2023-09-21 Thu>

Creator: Emacs 27.1 (Org mode 9.4)