数论笔记5-同余理论

温馨提示: 这一篇是到目前为止内容最多的一章, 性质非常重要, 难度相较于前几篇也有不小的上升.

1. 同余#

m|ab, 称 a,bm 同余, ba 对模 m 的剩余, 记作 ab(modm). 反之记作 ab(modm).
容易发现负数模和正数模是等价的, 所以我们只讨论 m1 的情况.
接下来我们给出一些关于同余的基本性质.

  1. a=q1m+r1,b=q2m+r2,0r1,r2<m. 则ab(modm)r1=r2. (同余的字面意义)
  2. 同余是一种等价关系.
  3. ab(modm),cd(modm)a+cb+d(modm) (可加性)
  4. ab(modm),cd(modm)acbd(modm) (可乘性)
  5. ab(modm),d1,d|mab(modd)
  6. ab(modm)dadb(mod|d|m)(d0)
  7. cacb(modm)ab(modm/(c,m))
  8. m1,(a,m)=1c,ca1(modm) (逆元)
  9. ab(modmj),1jkab(mod[m1,,mk]) (同余式的合并)

性质 1 到性质 7 都是很容易证明的. 性质 9 由 2.3.1 显然.
性质 2 的等价关系的意思就是满足自反性, 对称性, 传递性, 即:

  • aa(modm)
  • ab(modm)ba(modm)
  • ab(modm),bc(modm)ac(modm)

性质 8 实际上就是二元一次不定方程, 也不难证明. 这里我们记 ca1, 称为 a 对模 m 的逆元. 容易发现逆元有性质 (a1,m)=1(a1)1a(modm).

对于多项式我们也有同余的概念.
设多项式 f(x)=j=0najxj,g(x)=j=0nbjxj, 若满足 ajbj(modm) (0jn), 则有 ab(modm)f(x)g(x)(modm) (显然), 此时我们称这两个多项式模 m 同余, 记作 f(x)g(x)(modm). 若只满足 xZ,f(x)g(x)(modm), 称这两个多项式模 m 等价.
需要注意的是模 m 等价并不意味着模 m 同余, 比如取 f(x)=i=0m1(xi),g(x)0.

2. 剩余类和剩余系#

之前说过同余就是一种等价关系. 由此我们得出剩余类 (同余类) 的概念.
对全体整数进行划分, 使得两个数在同一个集合里当且仅当它们模 m 同余. 我们将这样划分出的每个集合称为一个模 m 的剩余类, 记作 rmodm, 其中 r 是它所属的剩余类的一个代表元素.
有简单性质:

  1. rmodm={r+km|kZ}, 由此我们也记 rmodm=r+mZ. (最后这个符号可以认为 Z 代表了任意整数, 也可以理解为对集合中的所有元素进行数乘和加法运算)
  2. rmodm=smodmrs(modm)
  3. rmodm=smodm(rmodm)(smodm)= 两者必居其一.
  4. m 恰有 m 个不同的剩余类 0modm,,(m1)modm, 它们构成的集合称为 Zm.
  5. 任意 m+1 个数中必有两数模 m 同余.
  6. 存在 m 个数两两模 m 不同余.
  7. a1rmodm,a2rmodm, 则 (a1,m)=(a2,m).

基本上都是用定义就能随便证. 注意性质 1 的符号, 接下来就要用.

但我们其实并不需要完整研究每个剩余类. 我们只需要从每个剩余类里面选出一个元素即可. 这就构成了完全剩余系.
更严格的定义: 一组数 y1,,ym 被称为模 m 的完全剩余系, 当且仅当对任意整数 a, 有且只有一个数 yj 满足 ayj(modm).
下面我们证明一个性质来让我们更加熟悉完全剩余系.

  1. nr(modm) 存在唯一的 0j<d, 满足 nr+jm(modmd)

我们用剩余系的语言来更精确地描述, 大概像这样:

rmodm=lmodd(r+lm)modmd

这都是对剩余系整体进行操作, 比较抽象. 需要仔细解释一下.
这里 lmodd 的意思是任选一个模 d 的完全剩余系 l 代入进去求并集.
关键的观察是, 取并的集合两两交集为空. 因为若有 r+l1mr+l2m(modmd), 得 l1l2(modd), 与 l 是模 d 的完全剩余系矛盾.
那就好理解了, 这意味着我们对剩余类 rmodm 进行了划分, 划分为 d 个模为 md 的剩余类的并. 因此只要证明了这个式子成立, 上面的性质也是自然成立的.
考虑直接进行推导. 化简右边的式子:
lmodd(r+lm)modmd=lmodd(r+lm+mdZ)=r+lmodd(lm+mdZ)=r+mlmodd(l+dZ)=r+mZ=rmodm
我们利用了 2.1 的符号. 提出 rm 的正确性源于符号的性质和右边集合交集始终为空.
倒数第二步等号的化简是因为所有模 d 的剩余类的并就是整数集.

总之上面性质的证明让大家体验了一下剩余系是如何发挥作用的, 并且已经有后面剩余系性质的意思了. 接下来我们先转移视线, 讨论另一类剩余系, 即既约剩余系.
有时我们只需要研究代表元素与模数互素的剩余类 (性质 2.7), 我们称它们为既约剩余类. 模为 m 的既约剩余类的个数记为 φ(m) (欧拉函数). 求欧拉函数的值和它的性质将在下一小节讨论.
同样地, 我们从每个既约剩余类中选取一个代表元素, 就构成了既约剩余系.
更严格的定义: 一组数 y1,,yφ(m) 被称为模 m 的既约剩余系, 当且仅当对任意满足 (a,m)=1 的整数 a, 有且只有一个数 yj 满足 ayj(modm).
由定义我们有简单结论:
9. 模 m 的所有既约同余类为 rmodm,(r,m)=1,1rm
10. φ(m)=(r,m)=1,1rm1
11. 任意 φ(m)+1 个与 m 互素的数中必有两数模 m 同余.
12. 存在 φ(m) 个数均与m 互质且两两模 m 不同余.

接下来我们讨论剩余系的整体性质和结构.
下面的性质中请注意区分带上下标的量和不带上下标的量.

  1. x 通过 (就是遍历每个元素的意思) 模 m 的完全剩余系 x+c 通过模 m 的完全剩余系.
  2. x 通过模 m 的既约剩余系 x+kjm 通过模 m 的既约剩余系.
  3. (a,m)=1, 则 x 通过模 m 的完全/既约剩余系 ax 通过模 m 的完全/既约剩余系.

这三个性质很容易证明.
下面我们给出几个用多个剩余系构造一个剩余系的方法.

  1. x(j) 分别通过模 mj 的完全剩余系 x=x(1)+m1x(2)++m1mk1x(k) 通过模 m=m1mk 的完全剩余系.

首先我们证明 k=2 时成立. 我们可以直接使用定理 8:

Z=x(1)modm1x(1)modm1=x(1)modm1x(2)modm2(x(1)+m1x(2))modm1m2

如果觉得抽象, 我们可以直接分析每个元素, 假设有:

xi1(1)+m1xj1(2)xi2(1)+m1xj2(2)(modm1m2)

同乘 m2 再消去易得 xi1(1)xi2(1)(modm1), 由完全剩余系知 xi1(1)=xi2(1), 由此易得 xj1(2)xj2(2)(modm2), xj1(2)=xj2(2). 因此, x 中元素两两不等. (实际上是一个反证法, 也就是假设有重复元素, 则与完全剩余系的条件矛盾) 显然 x(1)+m1x(2) 包含 m1m2 个元素, 且已证明两两不等, 故 x=x(1)+m1x(2) 通过模 m1m2 的完全剩余系.
一般情况只需使用数学归纳法和已证明的 k=2 的情况即可, 具体证明略.
特别地, 如果令所有的 mj 都相等, 这相当于用 m 进制数来构造完全剩余系. 另外, 也可以用性质 15 给 x 中的每一项乘上一个不同的常数, 但是意义不大.

下面给出了限制更强, 但能构造既约剩余系的结论:

  1. 符号同 16, 若 m1m 有相同的素因数, 则 x(1) 通过模 m1 的既约剩余系, x(j) 分别通过模 mj 的完全剩余系 (j2) x 通过模 m 的既约剩余系.

首先我们注意到既约剩余系就是从完全剩余系中选出与模数互素的数. 所以我们只要证明 (x(1),m1)=1(x,m)=1 即可.
(x(1),m1)=1 但存在素数 p 使 p|x,p|m, 则因为 m1m 有相同的素因数, 有 p|m1, 对 x 的定义式两边模 p 即有 p|x(1), 与 (x(1),m1)=1 矛盾.
与上一个定理一样, 如果令所有的 mj 都相等, 这相当于用 m 进制数来构造既约剩余系. 另外, 也可以用性质 15 给 x 中的每一项乘上一个不同的常数, 但是意义不大.

m1,,mk 两两互素, 我们有下面的构造方法:

  1. m1,,mk 两两互素, m=m1mk,Mj=m/mj. 则 x(j) 分别通过模 mj 的完全/既约剩余系 x=M1x(1)++Mkx(k) 通过模 m 的完全/既约剩余系.

这实际上和之后要讨论的中国剩余定理密切相关. 另外需要注意的是, 这个定理中的条件是充分必要的. 这里我们先对其进行简单证明.
这里证明 k=2 的情况. 一般情况只需使用数学归纳法和已证明的 k=2 的情况即可.
首先对完全剩余系进行证明. 一方面, 若存在 m2xi1(1)+m1xj1(2)m2xi2(1)+m1xj2(2)(modm1m2), 由于 (m1,m2)=1, 根据性质 1.9 可拆成两个同余式, 利用 1.7 化简后易得 xi1(1)=xi2(1), xj1(2)=xj2(2), 因此 x 通过模 m1m2 的完全剩余系.
另一方面, 若 x 通过模 m1m2 的完全剩余系, 此时我们先固定 x(2), 则 m2xij(1)m1m2 两两不同余, 即 xij(1)m1 两两不同余, 故 x(1) 通过模 m1 的完全剩余系. x(2) 同理.
然后我们来证明对既约剩余系的结论. 仿照 17 的证明, 我们只需要证 (x,m1m2)=1(x(1),m1)=(x(2),m2)=1 即可.
容易发现 (x,m1m2)=1(x,m1)=(x,m2)=1(m2x(1),m1)=(m1x(2),m2)=1(x(1),m1)=(x(2),m2)=1, 得证.
同样地可以用性质 15 给 x 中的每一项多乘上一个不同的常数.

作为对剩余类和剩余系的一点简单应用, 我们来计算两个式子的值.

  • xmodme2πicx/m

这个式子能够计算的原因就在于 m 次单位根和模 m 的剩余类间的对应关系.
所以我们随便取一组 x 代入, 比如 {0,,m1}:
xmodme2πicx/m=x=0m1(e2πic/m)x=1e2πic1e2πic/m=0(mc).
对于 m|c 的情况我们直接有 xmodme2πicx/m=m.

下面我们再对既约剩余系进行计算.

  • xmodme2πix/m (xmodm 代表对任意一组既约剩余系求和)

定义 μ(m)=xmodme2πix/m. 计算的方法是, 利用性质18, 代入 mj=pjαj:

μ(m)=xmodme2πix/m=x(1)modm1x(r)modmre2πi(M1x(1)Mrx(r))/m

将右边的求和号分开, 利用 Mj 的定义:

x(1)modm1x(r)modmre2πi(M1x(1)Mrx(r))/m=(x(1)modm1e2πix(1)/m1)(x(r)modmre2πix(r)/mr)=μ(m1)μ(mr)

因此有

μ(m)=μ(p1α1)μ(prαr)

我们只需计算素数幂处的取值即可.
容易发现 μ(pjαj)=x=1pjαje2πix/pjαjx=1pjαj1e2πipx/pjαj=x=1pjαj1e2πix/pjαj1. (即从 1,,pjαj 中去掉了 pj 的正整数次幂)
αj>1, 则原式即为 0. 若 αj=1, 易知原式为 1.
综合以上结果, 我们最终得到:

μ(m)={(1)r,α1==αr=10,otherwise

函数 μ(m) 被称为莫比乌斯函数, 以后会进行讨论.

3. 欧拉函数#

对于欧拉函数我们在之前其实就已经得到很多性质了. 列举在这里:

  1. φ(pk)=pk1(p1) (直接考虑互素即可, 上面计算 μ(pjαj) 的时候也是这样做的)
  2. m1m1m2 有相同的素因数, 则 φ(m1m2)=m2φ(m1) (2.17 k=2)
  3. (m1,m2)=1, 则 φ(m1m2)=φ(m1)φ(m2) (2.18 k=2)
  4. m=p1α1pkαk, 则 φ(m)=mp|m(11/p) (由上面的性质 1, 3 立得)
  5. m3, 2|φ(m). (由上面的性质 1, 3 立得)

接下来我们对欧拉函数进行更深入的研究. 这些性质与后面的数论函数, 指数原根都有不小的联系.

  1. d|mφ(d)=m

这里我们用数论函数和分析剩余系两种方法给出证明.

数论函数:
f(n)=dnφ(d), 则对于 (n,m)=1,

f(n)f(m)=(inφ(i))(jmφ(j))=injmφ(i)φ(j)=injmφ(ij)=dnmφ(d)=f(nm)

这说明 f(m)φ(m) 具有相似的性质, 我们称它们都为积性函数.
考虑计算 f(pk), 有f(pk)=i=0kφ(pi)=i=0k(pipi1)=pk
实际上已经做完了. 对于任意的 m, 设 m=p1α1pkαk, 有

f(m)=j=1kf(pjαj)=j=1kpjαj=m

d|mφ(d)=m 证毕.

分析剩余系:
考虑模 m 的一个完全剩余系 r, 不妨取 r={1,,m}, 我们将 (rj,m) 的值相同的元素分为一组. 我们来计算每组的数量.
固定 d=(rj,m) (1rjm). 代换 hj=rj/d, 由最大公因数性质, 原式等价于 (hj,m/d)=1,1hjm/d. 由 2.10 知这样的 hj 的个数, 也就是 rj 的个数, 就是 φ(m/d).
对所有可能的 d 求和, 即得:

d|mφ(m/d)=d|mφ(d)=m

在进行下面定理的推导之前, 我们先有一个简单的引理:

  1. rr 都通过模 m 的既约剩余系, 有 j=1φ(m)rjj=1φ(m)rj(modm)

实际上根据 2.9, r 中的数一定可表为 rj=rσ(j)+km 的形式. 累乘模 m 即得结论.

  1. (a,m)=1, 则 aφ(m)1(modm) (欧拉定理). 特别地, 当 m 为素数时, am11(modm) (费马小定理).

  2. (a,m)=1, 则 a1aφ(m)1(modm)

根据引理和 2.15, 考虑一组通过模 m 的既约剩余系 ra 使 (a,m)=1, 我们有

j=1φ(m)rjj=1φ(m)(arj)aφ(m)j=1φ(m)rj(modm)

因为 r 为既约剩余系, (rj,m)=1, 根据 1.7 有

aφ(m)1(modm)

9 作为 8 的推论自然成立.

定义 δm(a) 为使得 ad1(modm) (a,m)=1 的最小指数 d, 叫做 a 对模 m 的指数. 由欧拉定理知 δm(a) 显然存在. 我们有下面的简单结论:

  1. δm(a)|φ(m)
  2. (a,m)=1, 则 d0=δm(a)ad01(modm){1,a,,ad01} 两两模 m 不同余.
  3. 沿用上述记号, (a,m)=1, 则 d0=φ(m){1,a,,ad01} 构成模 m 的一组既约剩余系 (此时称 am 的原根).

这里只证明 10.
显见 δm(a)φ(m). 作带余除法: φ(m)=qδm(a)+r, 0r<δm(a)
aqδm(a)+raφ(m)1(modm), 化简得 ar1(modm).
r<δm(a), 只能有 r=0, 即 δm(a)|φ(m).

11 比较显然, 12 是 11 的推论, 证明略.

上面的式子都有 (a,m)=1 的前提条件. 如果没有了这个条件, 我们还是能得出和欧拉定理比较类似的结论:

  1. bφ(m),b=kφ(m)+r (0r<φ(m)), 有 abar+φ(m)(modm).

首先我们对 m 进行质因数分解 m=p1α1pkαk, 由 1.9, 我们只需证明:

abar+φ(m)(modpjαj)

分类讨论. 若 (a,pjαj)=1, 则根据欧拉定理有 aφ(pjαj)1(modpjαj).
φ(pjαj)|φ(m), 得 aφ(m)1(modpjαj).
于是

abakφ(m)+rarar+φ(m)(modpjαj)

如果 (a,pjαj)1, 那么必有 a=lpj, 得 ab=lbpjb.
注意到 bφ(m)φ(pjαj)=pjαj1(pj1)2αj1αj, 有 ab0(modpjαj).
另一方面, ar+φ(m)=lr+φ(m)pjr+φ(m), 注意到上面的不等式链里有 φ(m)αj, 我们有 ar+φ(m)0ab(modpjαj).
综上得到

abar+φ(m)(modpjαj)

因此

abar+φ(m)(modm)

欧拉函数应用广泛. 下面简单介绍一下广为人知的 RSA .

假设我们想要传输明文 a 而不希望被其他人知道. 我们有下面的算法:

  • 找两个大质数 p,q, 令 N=pq. N 的值可以公开, 但是 p,q 要保密.
  • 找一个密钥 e 满足 (e,φ(N))=1. φ(N)=(p1)(q1) 是容易计算的. 此时存在逆元 d 满足 ed1(modφ(N)). 密钥 e 可以公开, d 是解钥, 需要保密.

此时就可以给拥有解钥的人发送信息了.

  • 计算 bae(modN) (0b<N), 将 b 作为密文发送.
  • 有解钥 d 的人通过计算 bdaeda1+kφ(N)a(modN) 得到明文.

最后一步的正确性:
我们只需证明 a1+kφ(N)a(modp)a1+kφ(N)a(modq). 下证前一式, 剩余同理.
p|a 显然成立.
pa, 即 (p,a)=1, 根据费马小定理有 a1+kφ(N)a1+k(p1)(q1)a(modp).

容易发现, 要想对密文进行翻译, 需要知道 φ(N) 的值, 即需要知道 p,q 的值. 我们知道对大数做质因数分解是很困难的, 所以安全性就有了保证.

4. 威尔逊定理#

这一章讨论既约剩余系中元素的乘积, 也就是计算 rmodmr 在模 m 意义下的值.

  1. m=pl (p 为奇素数) 时, rmodmr1(modm). 特别地, l=1 时, 有威尔逊定理 (p1)!1(modp).

我们的思路是对逆元进行配对. 这样就只剩下自身即为逆元的数了.
所以我们计算 rj21(modpl), 即 (rj1)(rj+1)0(modpl).
因为 (rj1,rj+1)=(rj1,2)=12, 不可能有 pk|rj1pk|rj+1 (k1).
故原方程等价于 (rj1)0(modpl)(rj+1)0(modpl), 解得 rj1,1(modpl).
将所有的元素乘起来, 即有

rmodplr1(modpl)

成立.

(容易验证威尔逊定理对 p=2 也成立)

另一方面, (p1)!1(modp) 实际上还是 p 为素数的充分条件. 不过因为算阶乘太慢了所以应用没有那么广泛.
这里进行简单证明. 若 p 不为素数, 我们来计算 (p1)!p 的值.
p=1,4 可简单验证.
p 不是完全平方数, 显然有 p=ab,1<a<b<p, 由 ab|(p1)! 容易证明 (p1)!0(modp).
p 是完全平方数, 设 p=k2, 有 k>2, 此时 1<k<2k<p, 由 2k2|(p1)! 容易证明 (p1)!0(modp).
因此 (p1)!1(modp) 当且仅当 p 为素数.

更进一步, 我们有下面的定理:

  1. m=2pl (p 为奇素数) 时, rmodmr1(modm).

我们发现 φ(2pl)=φ(pl). 直接地, 我们用模 pl 的一组既约剩余系 r 去构造模 2pl 的一组既约剩余系 r:

rj={rj,2rjrj+pl,2|rj

r 仍通过模 pl 的既约剩余系且元素都为奇数, 因此 r 也通过模 2pl 的既约剩余系.
容易发现有 rmod2plr1(mod2) (全都是奇数), 综合 定理 1 和性质 1.9 即有

rmod2plr1(mod2pl)

另外对 m=1,2,4 验证, 容易发现这个结论对它们都成立. 于是综合上述结论我们有:

  1. m=1,2,4,pl,2pl (p 为奇素数) 时, rmodmr1(modm).

下面我们证明上述定理的必要性, 即若 m 不为以上的形式, 上述式子必不成立.

  1. m=2l (l3) 时, rmodmr1(modm).

我们仿照定理 1 来推导. 容易发现问题在于解这个方程:

(rj1)(rj+1)0(mod2l)

我们发现 rj1rj+1 都为偶数. 不过我们只需要利用 1.6 把 2 提出来:

rj12rj+120(mod2l2)

这个时候我们发现 rj12rj+12 互质.
仿照对定理 1 的证明, 该方程等价于 rj120(mod2l2)rj+120(mod2l2).
这是容易解的, 有 rj±1(mod2l1). 还原到模 2l 即有

rj1,2l11,2l1+1,2l1(mod2l)

乘起来即有

(2l11)(2l1+1)(2l1)(22l21)1(mod2l)

注意 l3.

  1. m=2lp1α1psαs, 则当 m 不为 1,2,4,pl,2pl (p 为奇素数) 时, rmodmr1(modm).

讨论完所有素数幂的情况后, 我们利用定理 2.18 来讨论 m 的一般形式.
考虑选取 2l 的既约剩余系 r0pjαj 的既约剩余系 rj, 则根据 2.18,

r=m2lr0+mp1α1r1++mpsαsrs

通过模 m 的既约剩余系.
我们分别计算 r 中元素之积模 2lpjαj 的值:

rmodmrrmodmm2lr0[(m2l)φ(2l)r0modmr0]φ(m/2l){1,l3(1)φ(m/2l),l=1,2(mod2l)

中间用到了欧拉定理和前面证过的 m=2l 的情况. 同样地

rmodmrrmodmmpjαjrj[(mpjαj)φ(pjαj)rjmodmrj]φ(m/pjαj)(1)φ(m/pjαj)(modpjαj)

让我们对上面的结果进行一些讨论.
我们只需要说明当 m 不为 1,2l,pl,2pl (2l 之前讨论过了) 时, 上面每一项式子的右边都是 1, 此时由 1.9 即得原式.

  • 因为 m 不为上面的形式, m 必包含至少一个奇素数, 此时 2|φ(m/2l), 上面的式子右边恒为 1.
  • 若包含两个以上的奇素数, 此时必有 2|φ(m/pjαj), 下面的式子成立.
  • 若只有一个奇素数, 则 φ(m/pjαj)=φ(2l), 由对 m 的限制知 l2, 故 2|φ(2l) 也成立, 下面的式子成立.

容易发现上面的讨论已经包含了所有情况.

综合上述结论和 m=2l 的情况, 当 m 不为 1,2,4,pl,2pl (p 为奇素数) 时,

rmodmr1(modm)

作者:pjykk

出处:https://www.cnblogs.com/pjykk/p/17071165.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   pjykk  阅读(421)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示