算法导论中的数论算法(一)

         数论其实很早就有过接触,而且也在数论上栽过跟头,然而这次又重新看数论却是因为一个名词:RSA。RSA这个缩写出现在身份认证的token上,一分钟随机6位数字出来,几乎每个技术公司都在用。偶然间翻开算法导论的时候,发现竟然有讲RSA的原理的,恰好RSA这一节包含在第31章-数论算法中。在翻看《算法导论》原著第31章的时候发现大部分关于数论的概念并不是那么晦涩难懂,反而看译本的时候却感觉难以理解。译者不但将一个简单易懂的概念翻译的及其晦涩,而且在关键的证明步骤中缺少了重要的逻辑暗示,导致证明过程几乎无法被理解。在看了本章的部分内容之后,在这里尝试用简单的话来阐述这些知识。

        数论是一门十分优美的纯数学的学科,但是(和最优化理论相比)在很长的历史中没有应用价值。但是今天,数论却被广泛地应用。因为密码学这个应用学科就是建立在数论的中的质数的一些理论上。这些理论的可取之处在于:我们能够很容易找到大质数;安全性在于:两个大质数的乘积很难因数分解。

【定理31.1】除法定理

        对于整数 a 和正整数 n ,存在唯一的整数 q 和 r ,满足 0 ≤ r < n,且 a=qn+r。

        其中,q 是 a 除以 n 的商, q=an 。r是a除以n的余数 r = a mod n。n | a 当且仅当 a mod n = 0。这个定理引出概念:模运算、整除。
        我们可以使用除以n得到的余数将整数集做划分。整数除以n得到的余数有n种(0,1,2,…,n-1),因此,可以将整数集合划分成n个等价类。等价类其实就是一个整数集的子集。等价类中的全部元素有一个共同的性质,除以n的余数相同。在同余的意义下,同一个等价类的元素是相等的。这是一个更广义的、更弱化的等于的概念。包含a的模n等价类表示为:

[a]n={a+kn:kZ}
        上式中,a是一个代表元素。 a[b]n 等价于 ab(modn) 。等价类的集合表示为:
Zn={[a]n:0an1}
         Zn 是一个集合的集合,它的每一个元素都是一个集合,即等价类。
        等价类可以使用代表元素简化表达:0表示 [0]n ,代表所有除以n余数是0的整数。代表元素是等价类中的最小非负元素。于是 Zn 的简化表达为 Zn={0,1,2,n1}

【定理31.2】最大公约数和两个数的线性组合

         a,b 是任意非零整数,则 gcdab 是集合 {ax+by:x,yZ} 中的最小正元素

        这个定理很有趣,两个数的最大公约数却是一个集合里的最小正元素。这里的线性组合的系数是在整数集合上的。

证明

        设 s a,b 的线性组合中的最小正元素,则有 s=ax+by ,并且 s 是集合{ax+by:x,yZ}中的最小正元素。
        先证明 gcd(a,b)s ,再证明 gcd(a,b)s

        设 q=as

         amods=aqs
                        =aq(ax+by)
                        =a(1qx)+b(qy)

        从上式看出, amods 也是 a s的线性组合, amods{ax+by:x,yZ} (注意: s 本身也是a,b的线性组合)。

        由于余数小于除数, 0amods<s 。因为 s{ax+by:x,yZ} 并且是集合中的最小正元素,对于同样是正整数并且在同一个集合中的 amods 来说,其值只能是0。

        因此 a s的倍数。同理可得 b s的倍数。 s a b 的公因子。

        因为gcd(a,b) a,b 的公因子的最大值,则有 gcd(a,b)s

        由 gcd(a,b)|agcd(a,b)|b ,得到 gcd(a,b)|ax+by. s是 a,b 的线性组合 s{ax+by:x,yZ} , gcd(a,b)|s

         gcd(a,b) s 的因子,则gcd(a,b)s

        因由夹逼定理有 gcd(a,b)=s

【推论31.3】能够整除做大公约数的数

        对于任意整数 a,b ,如果 d|ad|b ,则 d|gcd(a,b)

【推论31.4】成倍放大之后的做大公约数

        对于任意整数 a,b ,以及任意非负整数n,有 gcd(an,bn)=ngcd(a,b)

【推论31.5】两数之积的因子若与一数互质,则是另一个数的因子

        对于任意正整数 a,b,n ,如果 n|ab gcd(a,n)=1 , 则 n|b

         证明思路: gcd(a,n)=1 左右两边放大b倍。借用推论31.4的结论。

【定理31.6】和两个数互质的数也和两数之积互质

        对于任意正整数 a,b,p ,如果 gcd(a,p)1 gcd(b,p)=1 , 则 gcd(ab,p)=1

         证明思路: abp 的线性组合是1成立。

【定理31.7】能被质数整除的数必有能整除此质数的因子

        对于任意整数 a,b 和任意质数 p ,如果 p|ab , 则 p|a 或者 p|b

【定理31.8】唯一分解定理

        只有一种方法能将合数a写成下面乘积的形式:

a=pe11pe22perr
        其中 pi 是质数, pe11<pe22<<perr , ei 是正整数。
        

    
    
    
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值