今天开始真正意义上的数论学习,呕耶~
先发个牢骚……看着玩意看的想睡觉,尤其是半夜看…………
好,进入正题,有人说《算法导论》的数论部分写的比黑书或者其他的好些,所以我就看这本咯~
首先是整数集合Z 和自然数集合 N ,今天再看某个定理的时候把 Z 误以为 N ,然后想了半天为什么这个定理是成立的呢……后来恍然大悟,郁闷……
一、除法定理:对任意整数a 和任意整数 n ,存在唯一的整数 q 和 r ,满足 0<=r<n ,并且 a=qn+r 。
把它写成一个除法,得到a/n=q....r ,也就是给定了 a 和 n ,当然 q 和 r 也就确定咯!小学知识……
那么给定一个数n ,所有整数对他取余会存在 n 种情况 (0.1.2....n) ,那么把这些整数根据对他取余的结果分成了 n 类,例如给定 n=3 ,那么可以把所有的整数分成了 {-3,0,3,6,....}( 模 3 为 0) ; {-2,1,4,7......}( 模 3 为 1) ; {-1,2,5,8.....}( 模 3 为 2) 三类。
二、 公约数和最大公约数
先说明a|b 表示 b 整除 a 或者 a 能被 b 整除……
首先,有d|a && d|b ==>d|(a+b) && d|(a-b) ,数 d 满足能同时被 a 和 b 整除,那么 d 就是 a 和 b 的公约数,也就是说 a 和 b 同时有个因子 d ,所以 a+b 和 a-b 都有因子 d ,例如 a+b ,可以写成 d(a/d+b/d) ,因为 d 为 a 和 b 的公因子,所以能够保证 a/d 和 b/d 为整数,也就能保证 a+b 被 d 除后为整数,因此关系 d|a && d|b ==>d|(a+b) && d|(a-b) 成立。
这个关系可以推广为d|a && d|b ==> d|(ax+by) ,原因同上。
另外,如果a|b && b|a ,则可以得到 |a|=|b| ,也就是 a= ± b 。
a和 b 的最大公约数用 gcd(a,b) 表示,另外规定 gcd(0,0)=0 。则有如下性质:
gcd(a,b)=gcd(b,a);
gcd(a,b)=gcd(-a,b);
gcd(a,b)=gcd(|a|,|b|);
gcd(a,0)=|a|;
gcd(a,ka)=|a|;
相对于小学,现在的定义已经从正整数范围扩大到整个整数范围了。
下一个定理:如果a 和 b 是不都为 0 的任意整数,则 gcd(a,b) 是 a 与 b 的线性组合集合 {ax+by , x,y 均为整数 } 中的最小正元素。这个证明我没有看懂,不过结论貌似挺重要的……
对于任意整数a 与 b ,如果 d|a 并且 d|b ,则 d|gcd(a,b) ,显然成立,因为如果 d 为 a 和 b 的公因子,也就是 a 和 b 的公约数,显然是 a 和 b 的最大公约数的因子,也就是 d|gcd(a,b)
最后给两个推论
1. 对所有的整数a 和 b 以及任意的非负整数 n ,有 gcd(an,bn)=ngcd(a,b)
2. 对所有的正整数n , a , b ,如果 n|ab 并且 gcd(a,n)=1 ,则 n|b 。
三、 互质数
gcd(a,b)=1,则有 a , b 互质。 a 和 b 为互质数。
如果对任意整数a , b , p ,有 gcd(a,p)=1 且 gcd(b,p)=1 ,则有 gcd(ab,p)=1
这个定理的证明就用到了刚才那个说很重要的定理……
证明如下:
设有整数x,y,x',y' 满足
ax+py=1
bx'+py'=1
两边相乘,得到
ab(xx')+p(ybx'+y'ax+pyy')=1
所以1 是 ab 和 p 的一个正线性组合,所以 gcd(ab,p)=1 证毕。
四、 唯一质因子分解
就是说任意的数
其中p1...pn 为质数。
五、 欧几里得算法及其拓展
GCD递归定理:对于任意的非负整数 a 和任意的正整数 b , gcd(a,b)=gcd(b,a mod b)
之后就有了欧几里得算法,也就是辗转相除法,这里略过,太熟悉了……
之后就是欧几里得的拓展了,对于ax+by=gcd(a,b)=d 时,可以算出满足条件的 x 和 y ,推导和求法如下