第九章:数论

第九章:数论

数论是对整数的研究。

数论还提供了一个优秀的环境,使我们可以演练和应用在前面的章节中研究出来的理论证明技巧。

9.1 整除

定义9.1.1 :a整除b(表示为alb ),当且仅当存在整数k,使得 a k = b ak = b ak=b

根据定义9.1.1可以直接得到以下结论。对任意整数n:
n ∣ 0 , n ∣ n ,以及 ± 1 ∣ n n | 0,n | n,以及±1|n n∣0,nn,以及±1∣n
同样,
0 ∣ n I M P L I E S n = 0 0 | n IMPLIES n = 0 0∣nIMPLIESn=0

9.1.1 整除的性质

引理9.1.2:

  1. 若a | b且b | c,则a | c。
  2. 若a | b且a | c,则对所有的s和t,a | sb + tc 。
  3. 对所有c≠0,a | b当且仅当ca | cb。

证明第二个引理:

image-20221023102654475

像sb+ tc这样的数被称为b和c的整数线性组合,或者简称为线性组合

定义9.1.3:

整数n是整数b0,…, bi的线性组合,当且仅当存在整数So. … Sk,使得
image-20221023102858961

9.1.2 不可整除问题

定理9.1.4:[除法定理] 令n和d为整数,其中d ≠0。则存在唯一的整数对q和r,使得
n = q ⋅ d + r 且 0 ≤ r < ∣ d ∣ n = q ·d +r且0≤r < |d| n=qd+r0r<d

数q和数r分别被称为n除以d时的商和余数,用 q c n t ( n , d ) qcnt(n, d) qcnt(n,d)表示商,用 r e m ( n , d ) rem(n, d) rem(n,d)表示余数。

定义9.1.5: 对任意实数r,r的绝对值|r|定义为:

image-20221023103344866

可以用括号表示区间:

image-20221023103550111

9.1.3 虎胆龙威

通过对 a , b ( 假设 b > a ) a,b(假设b>a) a,b(假设b>a)两个水壶的操作,我们发现如下引理:

引理9.1.6:(水壶问题)在6.2.3节介绍的《虎胆龙威》状态机中,若水壶的容积分别为a和b,则每一个壶中的水的总量总是a和b的线性组合。

证明:归纳假设P(n)是这样一个命题,即经过n次转移,每一个壶中的水的总量是a和b 的线性组合。

image-20221023104343645

9.2 最大公约数

α和b的公约数是指能够同时整除它们的数。 a和b的最大公约数( greatest common divisor)写作gcd(a,b)。

注: g c d ( n , 0 ) = 0 gcd(n,0) = 0 gcd(n0)=0 该等式源于任何数都能整除0这一事实。

9.2.1 欧几里得算法

引理9.2.1:若b≠0
g c d ( a , b ) = g c d ( b ; r e m ( a , b ) ) gcd(a,b) = gcd(b; rem(a, b)) gcd(a,b)=gcd(b;rem(a,b))
26和21使用欧几里得算法得到
g c d ( 26 , 21 ) = g c d ( 21 , 5 ) = g c d ( 5 , 1 ) = 1 gcd(26,21) = gcd(21,5) = gcd(5,1) = 1 gcd(26,21)=gcd(21,5)=gcd(5,1)=1
因此,我们无法使用上面的推理来排除布鲁斯在大壶中灌入3加仑水的可能性。事实上,由于最大公约数是1,布鲁斯能够向大罐子中灌入不超过其容量的任意加仑的水。我们需要更多的数论知识来解释这一点。

欧几里得算法状态机

欧几里得算法可以很容易地被形式化为一个状态机,其状态集合是N2并存在一条转移规则:
( x , y ) → ( y , r e m ( x , y ) ) (x, y) → (y , rem(x, y)) (x,y)(y,rem(x,y))
gcd(x,y)是改状态机上的一个不变量。如果y变成0,不变量仍为真,且有
X = g c d ( x , 0 ) = g c d ( a , b ) X=gcd(x , 0)=gcd(a, b) X=gcd(x,0)=gcd(a,b)
即x的值就是我们想要的最大公约数。

欧几里得算法在最多1+2loga次会停止。

9.2.2 粉碎机

定理9.2.2:a和b的最大公约数是α和b的线性组合,即存在整数s和t使得
g c d ( a , b ) = s a + t b gcd(a, b) = sa + tb gcd(a,b)=sa+tb
推论9.2.3:一个整数是a和b的线性组合,当且仅当它是gcd(a,b)的倍数。

粉碎机会经历相同的步骤,但是需要在过程中做一些额外的记录:当计算gcd(a,b)时,我们记录如何将每一个余数(如例子中的49、21和7)写作a和 b的线性组合。这么做是值得的,因为我们的目标是将最后的非零余数,即最大公约数,写成一个这样的线性组合。例如,此处需要额外记录的信息如下:

image-20221023124237117

推论9.2.4:假设我们有容量为a和b的水壶,则每一个壶中的水的总量始终是gcd(a,b)的倍数。

9.2.3:水壶问题的通解

推论9.2.3说明3可以被写作21和26的线性组合,因为3是gcd(21,26)= 1的倍数。因此,粉碎机能够提供满足如下条件的s和t :
3 = s ﹒ 21 + t ⋅ 26 3 =s﹒21+t·26 3=s﹒21+t26
系数s既可能是正数也可能是负数。然而,我们可以容易地将这个线性组合转变为如下等价的线性组合
3 = s ′ ⋅ 21 + t ′ ⋅ 26 3 = s'· 21+t'·26 3=s21+t26
其中s‘是正数,可由上面的式子s = s + 26 且 t = t - 21 变化的来。

由此,我们便可得到该问题的通解为:

image-20221023130140642

定理9.2.5:假设我们有容量为a和b的水壶。对任意c ∈ [0…a],当且仅当c是α和b的最大公约数的倍数时,才可能得到c加仑的水。

9.2.4 最大公约数的性质

引理 9.2.6

image-20221023130542395

9.3 质数的奥秘

定义9.3.1:质数( prime)是大于1,且只能被其本身和1所整除的数。除0、1和-1之外的非质数称为合数( composite )。

质数在整数中的密度是有精确的上界的,这是关于质数的最重要的认识之一。也就是说,令T(n)表示直到n的质数的个数

定义9.3.2
image-20221023151915629

一步一步地,π随着两个质数间的不规则间隔而不规律地增长,但它的总体增长率被认为在经过平滑后,与函数n/ ln n的增长率一致。

定理9.3.3(质数定理)

image-20221023152153678

因此,质数是逐渐减少的。根据经验法则,在n附近区域的Inn个整数中大约会有1个质数。

定理9.3.4(契比雪夫质数密度定理)对n > 1,

image-20221023152409374

9.4 算数的基本定理

当数列中的每一个数至少与其后面的数一样大时,这个数列是弱递减的。注意,根据这个定义,只包含一个数的数列,以及不包含数的序列(空数列)都是弱递减的。

定理9.4.1 :[算术基本定理]每一个正整数都是一个唯一的弱递减质数序列的乘积。

例: 12 = 3 ⋅ 2 ⋅ 2 例: 12 = 3 · 2 · 2 例:12=322

9.4.1 唯一分解定理的证明

引理9.4.2:若p是质数且p | ab,则p |a或p | b。

证明:

一种情况是,若gcd(a,p) = p,则引理成立,因为a是p的倍数。

除此之外,gcd(a,p)≠p。在这种情况下,gcd(a,p)必须为1,因为只有1和p是p的正约数。又因为gcd(a,p)是a和p的线性组合,我们有1= sa + tp对某些s和t成立。那么b = s(ab)+(tb)p,也就是说,b是ab和p的线性组合。既然p同时能整除ab和p,它也能够整除它们的线性组合bo

引理9.4.3 :令p为质数。若p l a1a2···an,则p能整除某些ai 。

算数的基本定理的证明

利用良序原则,定理2.3.1表明每一个正整数都能被表示为质数的乘积。因此我们只需要证明这个表达式是唯一的。我们同样使用良序原则来证明这一点。

使用反证法来进行证明:假设,与定理相反,存在可以用不止一种方式来写成质数乘积的整数。根据良序原则,存在一个满足这一性质的最小的整数。称这个整数为n,并令:

image-20221023160408758

其中两个乘积都是弱递减顺序的,并且p1≤q1。

  1. 若q1=p1,则n/q1也可以被表示成不同的弱递减质数序列的乘积,
    即:image-20221023160455727

​ 既然n/q1<n,这不可能为真,因此我们可以得到结论p1<q1。

  1. 因为 p i p_i pi是弱递减的,所有的 p i p_i pi都小于q1。但是,

image-20221023160541275

​ 因此根据引理9.4.3,q整除某个pi,这与q大于它们这一事实相矛盾。

9.5 阿兰 · 图灵

9.5.1图灵编码(1.0版)

图灵编码的第一个挑战是,将一条文本消息转换成一个整数,这样我们就可以对它进行数学运算。
可以采用这种方法:将消息中的每一个字母替换为两位数字(A=01,B = 02,C= 03等)并将所有的数字串联起来形成一个庞大的数字。

例:

image-20221023161439238

第二,图灵编码要求消息是质数,因此我们可能需要用一些数字来填充这个结果,从而得到一个质数。质数定理表明,使用较少的几个数字来填充就可以了。在这种情况下,附加数字13就会得到质数2209032015182513。

下面就是加密过程的工作原理:在下面的描述中,m是我们想保密的未加密的消息,m是纳粹军队可能拦截的加密后的消息,而k是密钥。

  1. 事先:发送方和接收方对密钥达成一致,密钥是一个大质数k。
  2. 加密:发送方加密消息m时计算:
  3. 解密:接收方解密m时计算:image-20221023162350736

例:假设密钥是质数k = 22801763489并且消息m是“victory”。那么加密消息是:

image-20221023162436756

图灵编码真的安全吗?

拦截方只能看到加密后的消息m= m·k,因此恢复原始消息需要分解m。尽管付出了巨大的努力,人们还没有发现真正高效的分解算法。实际上,图灵编码应用了他自己的一项发现,即计算能力是有限的。因此,当m和k足够大时,拦截方似乎就没那么好运了!

这些听起来都很有前景的样子,但图灵编码其实有一个重大缺陷。

9.5.2破解图灵编码(1.0版)

当使用相同的密匙,传递两条消息时,

image-20221023163520716

两条加密消息 m 1 ^ \widehat{m_1} m1 m 2 ^ \widehat{m_2} m2 的最大公约数就是密钥k。并且,正如我们所见,两个数的最大公约数可以非常高效地计算出来。因此,在发送第二条消息之后,拦截方就能恢复出密钥并读取每一条消息!

9.6 模运算

高斯认为,a和b是模n ( mod n)同余的,当且仅当n| (a-b)。这可写作:

image-20221023165839991

引理9.6.1(余数)

image-20221023165928647

余数引理9.6.1解释了为什么同余关系有着和相等关系一样的性质。特别是,下面这些性质是直接可得的。

image-20221023170447443

我们将经常用到余数定理9.6.1的另一个直接推论:

推论9.6.3

image-20221023170512672

下一个关于同余的最有用的事实是,它们在加法和乘法中保持不变。

image-20221023185925567

9.7 余运算

image-20221023191901089

例:计算如下的取余运算

image-20221023191928897

第一步,整型指数给出的是一系列的乘法,根据通用法则,我们可以将这些相乘的数替换为它们的余数。得到如下的式子:

image-20221023192054969

第二步,在对一个数的若干次幂进行求余运算时,在进行若干次后,就会出现一定的规律。如:

image-20221023192248024

因此可进行如下运算:

image-20221023192423253

注意:注意,用余数来代替指数将会是一个灾难性的错误。通用法则适用于加法和乘法的操作数,而指数是用来控制进行多少次乘法运算的。一定要当心这一点。

9.7.1: 环 Z n Z_n Zn

定义 + n +_n +n符号:它被用来先计算一次加法,再计算加法的和除以n的余数。对乘法也有类似的定义。

image-20221023192903505

引理 9.7.1

image-20221023193011278

在[0…n)范围内的整数以及 + n +_n +n ⋅ n ·_n n运算被称为模n整数环,表示为 Z n Z_n Zn。作为引理9.7.1的延伸,熟悉的运算规则在 Z n Z_n Zn中成立。

下面所有的等式在 Z n Z_n Zn中为真:

image-20221023193806448

总的主题是,余数运算和普通运算很像。但我们将会检查几个意外情况。

9.8 图灵编码(2.0版)

2.0版本的图灵编码没有使用传统的运算,而是使用了模运算。

事先:发送方和接收方对一个大数n取得一致,这个数可以公开。这将是我们所有运算中的模数。与1.0版一样,它们也对一个质数k <n取得一致,即密钥

加密:与1.0版本一样,消息m必须是[0…n)中的另一个质数。发送方通过计算mk来将消息m加密,得到 m ^ \widehat{m} m ,但这一次还需要模n:

image-20221023195450849

解密:解密步骤是一个难点。我们可能还希望和之前一样,通过将加密消息 m ^ \widehat{m} m 除以密钥k来解密。而难点在于, m ^ \widehat{m} m 是mk除以n的余数。所以将 m ^ \widehat{m} m 除以k,可能甚至得不到一个整数!

9.9 倒数与约去

一个数x的乘法逆,是 x − 1 x^{-1} x1,使得 x − 1 x^{-1} x1·x = 1

我们可以用倒数来代指乘法逆。

事实上,除了唯一的例外0,每一个有理数n/m都有一个倒数,即m/n。而另一方面,在整数范围中,只有1和-1有倒数。而在环 Z n Z_n Zn内,事情就变得有点复杂了。例如,2是8在 Z 15 Z_{15} Z15上的倒数,因为

image-20221023200415795

另一方面,3在 Z 15 Z_{15} Z15上没有倒数。

9.9.1 互质

没有共同的质约数的整数被称为互质。这与没有大于1的公约数(不论是否为质数)等价。这也相当于说gcd(a, b) = 1。

引理9.9.1:若k ∈ [0…n)与n互质,则k有 Z n Z_n Zn上的倒数。

证明:如果k与n互质,则根据最大公约数的定义有gcd(k,n)= 1。这意味着我们可以利用9.2.2节中的粉碎机来找到n和k的一个等于1的线性组合:

image-20221023204912624

因此,利用余数运算的通用法则(引理9.7.1),我们得到

image-20221023204933201

image-20221023205000347

引理9.9.2:若i和j都是k在 Z n Z_n Zn上的倒数,则i =j。

在这里使用质数的模是很有吸引力的,因为和有理数与实数一样,当p是质数时,每一个非零数都有一个在 Z p Z_p Zp上的倒数。

9.9.2 约去

一般而言,约去在Zn上不是永真的( valid )。例如,

image-20221023205351625

而约去3会得出10等于5这样荒谬的结论。
不能约去乘法项,是Zn运算与一般整数运算之间最显著的差异。

定义9.9.3一个数k在 Z n Z_n Zn上是可约的( cancellable ),当且仅当,对所有a,b e [0…n),

image-20221023205755162

引理9.9.4: 若k在Z,中有一个倒数,则它是可约的。

定理9.9.5: 对k ∈[0…n),下面的式子等价:

image-20221023210042281

9.9.3 解密(2.0版)

倒数是破解图灵编码的关键。具体来说就是,将加密消息乘以密钥的Z倒数j,可以恢复出原始消息:

image-20221023210404219

因为k,n都为质数,所以k关于Zn肯定有倒数,可以通过粉碎机求出。

9.9.4破解图灵编码(2.0版)

如果我们已知明文m和密文 m ^ \widehat{m} m ,如何去求他的密匙k呢?

求法:

由于m是小于质数n的正数,纳粹可以利用粉碎机找到m的Z,倒数j。于是

image-20221023211137467

9.10 欧拉定理

定义9.10.1:对n >0,定义:

image-20221023215057400

函数 ϕ \phi ϕ被称为欧拉 ϕ \phi ϕ函数。

更一般地,若p是质数,则 ϕ \phi ϕ§= p-1,因为[0…p)中的每个正数都与p互质。然而,当n是合数时,情况就变得有点复杂。

定理(欧拉定理,Euler’s Theorem) .若n与k互质,则

image-20221023215351398

定义9.10.2: Z n ∗ Z_n^* Zn为(0…n)中与n互质的整数:

image-20221023215524423

则有:

image-20221023215537960

定理9.10.3: Z n Z_n Zn上的欧拉定理).对所有k∈ Z n ∗ Z_n^* Zn

image-20221023215654325

引理 9.10.4:image-20221024093154165

定义9.10.5 : Z n Z_n Zn的任意元素k和子集s,令

image-20221024094051806

引理 9.10.6:若k ∈ Z n ∗ Z_n^* Zn且S⊆ Z n ∗ Z_n^* Zn,则

image-20221024093758610

推论9.10.7: 若k ∈ Z n ∗ Z_n^* Zn,则
k Z n ∗ = Z n ∗ kZ_n^* = Z_n^* kZn=Zn

现在,我们可以完成对欧拉 Z n Z_n Zn定理9.10.3的证明。

image-20221026184128986

费马小定理

费马小定理是欧拉定理的一个著名特例。

推论9.10.8(费马小定理,Fermat’s Little Theorem)假设p是质数并且k不是p的倍数。则

image-20221024094743146

9.10.1 计算欧拉 ϕ \phi ϕ函数

引理9.10.9
image-20221024094958703
对质数p ≠q成立。

证明:

由于p和q是质数,任何不与pq互质的数必须是p或q的倍数。在[0…pq)上的所有pq个数中,恰好存在q个p的倍数和p个q的倍数。因为p和q互质,[0…pq)唯.一的p和q的公倍数是0。因此在[0…pq)上,有p +q-1个数不与n互质。这意味着image-20221024095206025

定理9.10.10:

image-20221024095343561

例:image-20221024095812255

推论9.10.11:对任意数n,若p1, p2,…,pj是n的(不同的)质数约数,则

image-20221024100235357

9.11 RSA公钥加密

相比于传统的加密方法,RSA有一个主要的优势:加密消息的发送方和接收方不必提前接触,来对密钥取得一致。相反,接收方既有一个他们密切守护的私钥( private key),也有一个他们尽可能广泛分发出去的公钥( private key )。希望向接收方发送秘密消息的发送方,利用接收方广泛分发的公钥来加密他们的消息。然后,接收方可以用他们秘密持有的私钥来解密收到的消息。

image-20221024103553340

9.12 SAT与RSA的关系

RSA可行的原因:两个质数的相乘很快,但分解两个质数的乘积似乎是极其吃力的。

如果 SAT可以在多项式时间内解决,那么质数分解也一样,于是 RSA将很“容易”破解。

书上那个电路的例子没咋看懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值