欧几里德(Euclid)算法
首先我们介绍整数的带余除法,它是整个数论的基础性定理之一。
定理1 (带余除法)设a,bZ且b0,那么存在一对整数q和r,使得
abqr且0r|b| (1)
满足以上条件的整数q和r是唯一确定的。
由(1)式显然有(a,b)=(b,r)
我们知道,对于两个整数a和b,可以对其进行分解来计算它们的最大公因数,但对于大整数而言,目前还没有足够有效的办法进行。实际中常用的用来计算两个数的最大公因数的算法称为欧几里德算法。它的理论依据正是前面所述的带余除法。
欧几里德算法的数学表述如下:
a,bZ且b0,重复应用带余除法,我们有:
aq1br1,bqrr,212r1q3r2r3,rn2qnrn1rn,rn1qn1rnrn1,0r1|b|0r2r10r3r20rnrn10rn1rn
这时,|b|r1r20,由于小于|b|的正整数只有有限个以及1整除任一整数,所
以这过程不能无限制地做下去,必定会出现某个n,要么rn|rn1,rn1,要么rn1,此时余数rn10。
我们容易得到
定理2 rn(a,b)
这是因为(a,b)(b,r1)(r1,r2)(rn2,rn1)(rn1,rn)rn
另外,由(1)式我们可得:
r1aq1b,rbqr,221r3r1q3r2,rnrn2qnrn1,0r1|b|0r2r10r3r20rnrn1
把前面的式子依次代入到后面的除式中,相应地消去r1,r2,r3,,rn1,最后,rn可以表示为a和b的整系数线性组合,这时的系数即为使ax+by=(a,b)的系数。
习题
1、 什么是计算复杂性、空间复杂性?简述P问题、NP问题和NP-完全问题之间的关系。
2、1. O(ax7+3x3+sin(x))=
2. O(en+an10)=
3. O(n!+n50)=
3、 对于整数15和18,问:
(1) 它们是否互素?
(2) 试用欧几里德算法求它们的最大公因子。
14、28xmod15是否有解,为什么?如果有解,请给出两种计算方法。
5、求下列各数的最大公因数:
(45,75), (102,222), (666,1414), (3961,952), (147,64)
并用它们的线性组合表示。
6、试证若a=bq+r, 则
gcd(a, b)=gcd(b, r)
7、试证若(a,b)=1,a|(bc), 那么a|c。
8、若d=gcd(a, b), 则存在整数p和q,使得d=pa+qb
9、求下列问题的解
(1) 3x5mod7
(2) 4x5mod7
(3) 10x15mod35
(4) 7x15mod16
10、证明
12(n1)0modn
1323(n1)30modn
其中n是正整数。
11、求下列方程组的解:
x0mod2
x0mod3
x1mod5
x6mod7
12、求下列方程组的解:
x4mod11
x3mod17
x1mod2
x2mod3
x3mod5
因篇幅问题不能全部显示,请点此查看更多更全内容