《离散数学课件初等数论.ppt》由会员分享,可在线阅读,更多相关《离散数学课件初等数论.ppt(22页珍藏版)》请在人人文库网上搜索。
1、初等数论,主要内容 素数 最大公约数与最小公倍数 同余 在计算机科学中的应用,19.1 素数,1. 整除 定义1:设a, b是两个整数,且a0, 若存在整数c 使 b=ac,则称b 被a 整除,或 a 整除b,记作 a|b. 此时, 又称 b 是a 的倍数,a是b 的因子. 把 a不整除 b 记作 a b.,性质:令a,b,c为整数,有如下结论: 1)若a |b且a |c, 则 x, y, 有a | xb+yc. 2)若a |b且b |c, 则a |c. 3)若 a |b,那么对于所有整数 m0都有 a | mb.,19.1 素数,2. 素数 定义2:大于 1 且只能被 1 和自身整除的正整数。
2、称为素数(质数)。大于 1 又不是素数的正整数称为合数。,算术基本定理:每个正整数都可以唯一地表示为素数的乘积,其中素数因子从小到大依次出现,即 例1:100, 641, 999的素因子分解为: 100=2255=2252 641=641 999=33337=3337,19.1 素数,定理 2:如果n是合数,那么n必有一个小于或等于 的素因子。 证:如果n是合数,它有一个因子a,使得1 a n, 于是 ,这样 ,这个因子或是素 数,或是有素因子。无论哪种情况,n都有小于或等于 的素因子,例2:证明101是素数。 证明思路:101不含有不超过 的素因子。,19.1 素数,定理 3:有无穷多个素数。
3、。,梅森数(Marin Mersenne): 2p1, 其中p为素数。 当n是合数时, 2n1一定是合数, 2ab1=(2a1)(2a(b1)+2a(b2)+2a+1). 梅森数可能是素数, 也可能是合数: 221=3, 231=7, 251=31, 271=127都是素数, 而2111=2047=2389是合数. 到2002年找到的最大梅森素数是2134669171, 有4百万位.,19.2 最大公约数和最小公倍数,d是a与b的公因子(公约数): d |a且d |b m是a与b的公倍数: a | m且b | m 定义3:设a和b是两个不全为0的整数, 称a与b的公因子中 最大的为a与b的最大。
4、公因子, 或最大公约数, 记作gcd(a,b). 设a和b是两个非零整数, 称a与b最小的正公倍数为a与b的 最小公倍数, 记作lcm(a,b). 例3 gcd(12,18)=6, lcm(12,18)=36. 对任意的正整数a, gcd(0,a)=a, gcd(1,a)=1, lcm(1,a)=a.,19.2 最大公约数和最小公倍数,定理4: (1) 若a | m, b | m, 则 lcm(a,b)| m. (2) 若d |a, d |b, 则d | gcd(a,b). 证 (1) 记M=lcm(a,b), 设m=qM+r, 0rD, 注意到d |a, D|a, 由(1), 得m |a. 。
5、同理, m |b. 即, m是a和b的公因子, 与D是a和b的最大公约数矛盾.,19.2 最大公约数和最小公倍数,利用整数的素因子分解, 求最大公约数和最小公倍数. 设 其中p1,p2,pk是不同的素数, r1,r2,rk,s1,s2,sk是非负 整数. 则 gcd(a,b)= lcm(a,b)=,例4 求150和220的最大公约数和最小公倍数.,解 150=2352, 168=2337. gcd(150,168)=21315070=6, lcm(150,168)=23315271=4200.,欧几里得算法-辗转相除法,除法算法: a=qb+r, 0r |b|, 记余数r=a mod b 例如。
6、, 20 mod 6=2, 13 mod 4=3, 10 mod 2=0,定理5: 设a=qb+r, 其中a, b, q, r 都是整数, 则 gcd(a,b) = gcd(b,r). 证明:只需证a与b和b与r有相同的公因子. 设d是a与b的公因 子, 即d |a且d |b. 注意到, r=aqb, 由性质可得d |r. 从而, d |b且d |r, 即d也是b与r的公因子. 反之一样, 设d是b与r的公 因子, 即d |b且d |r. 注意到, a=qb+r, 故有d |a. 从而, d |a且d |b, 即d也是a与b的公因子.,欧几里得算法-辗转相除法,最大公因数的求法:辗转相除法 例。
7、5:求gcd(15,36) gcd(54,30) 36=15 2+6 54=30+24 15=6 2+3 30=24+6 6=3 2+0 24=4 6+0 因此,gcd(15,36)=3 gcd(54,30)=6 原理: gcd(a,b) = gcd(b,r) 这里,gcd(36,15) = gcd(6,15) = gcd(6,3) = 3,欧几里得算法-辗转相除法,int gcd(int x,int y) int g; if (x 0) g = x; x = y%x; y = g; return g; ,试跟踪求gcd(36,15)时,变量值变化: y x g,C语言代码:,19-3 同余,。
8、定义4: 设m是正整数, a和b是整数. 如果m|ab, 则称a模 m同余于b, 或a与b模m同余, 记作ab(mod m). 如果a与b模 m不同余, 则记作a b(mod m). 例如, 153(mod 4), 160(mod 4), 14 2(mod 4), 15 16(mod 4). 下述两条都是a与b模m同余的充分必要条件: (1) a mod m = b mod m. (2) a=b+km, 其中k是整数.,19-3 同余,性质:同余关系是等价关系。,模m等价类: 在模m同余关系下的等价类. am, 简记作a。 Zm: Z在模m同余关系下的商集。 在Zm上定义加法和乘法如下: a,。
9、 b, a+b=a+b, ab=ab.,例6:写出Z4的全部元素以及Z4上的加法表和乘法表.,解 Z4=0,1,2,3, 其中i=4k+i |kZ, i=0,1,2,3.,19-3 同余,例7: 3455的个位数是多少?,解:设3455的个位数为x,则3455x(mod10).,由341(mod 10), 有 3455=34113+3337(mod 10), 故3455的个位数是7.,19-3 同余,模m逆 定义5 如果ab1(mod m), 则称b是a的模m逆元, 记作a1(mod m)或a1. a1(mod m)是方程ax1(mod m)的解. 性质: 当a与m互素时, 方程 x a-1(。
10、mod m) 有唯一解 即:ax km = 1 当a与m不互素时, 此方程无解。 一个数关于某一个模m的乘法逆元不一定存在。 如 2关于模14的乘法逆元不存在,因为2与14不互素,扩展的Euclid算法,求乘法逆元: 先用Euclid算法求得gcd(a, n) = 1 从1开始逆推,直到得到1 = ax kn 则x为a关于模n的乘法逆元 例8:求5关于模14的乘法逆元 辗转相除:14 = 5 2 + 4 5 = 4 + 1 逆推:1 = 5 - 4 = 5 - (14 - 5 2) = 5 3 - 14 因此,5关于模14的乘法逆元为3。,扩展的Euclid算法,例9:求10关于模17的乘法逆。
11、元 17 = 10 + 7 10 = 7 + 3 7 = 3 2 + 1 1 = 7 - 3 2 = 7 - (10 7) 2 = 7 3 - 10 2 = (17 10) 3 - 10 2 = 17 3 - 10 5 = 17 3 - 17 10 + 17 10 - 10 5 = 10 12 - 17 7 所以10关于模17的乘法逆元为12,19-4 应用,伪随机数产生 随机数:随机变量的观察值 伪随机数 (0,1)上的均匀分布U(0,1): a(0a1), P0Xa=a 线性同余法 选择4个非负整数: 模数m, 乘数a, 常数c和种子数x0, 其中2am, 0cm, 0 x0m, 用递推公。
12、式产生伪随机数序列: xn=(axn1+c) mod m, n=1,2, 取 un=xn/m, n=1,2, 作为U(0,1)伪随机数.,19-4 应用,线性同余法产生的序列的质量取决于m, a和c. 例如 m=8, a=3, c=1, x0=2, 得到7,6,3,2,7,6,周期为4 m=8, a=5, c=1, x0=2, 得到3,0,1,6,7,4,5,2,3,0,1, 周期为8. a=0, 得到c, c, c, a=1, 得到x0+c, x0+2c, x0+3c, 乘同余法: c=0(x00)的线性同余法, 即 xn=axn1 mod m, n=1,2,. 最常用的均匀伪随机数发生器:。
13、m=2311, a=75的乘同余法, 它的周期是2312。,密码学,恺撒(Caesar)密码 加密方法: ABCDEFGH I J KLMNOPQRS TUVWXYZ DEFGH I JKLMNO PQRS TUVWXYZ ABC 明文: SEE YOU TOMORROW 密文: VHH BRX WRPRUURZ 18 4 4 24 14 20 19 14 12 14 17 17 14 22 21 7 7 1 17 23 22 17 15 17 20 20 17 25 加密算法 E(i)=(i+k)mod 26, i=0, 1,25, 解密算法 D(i)=(ik)mod 26, i=0, 1,。
14、25 其中密钥k是一取定的整数, 这里取k=3.,加密算法,线性同余加密算法 E(i)=(ai+b)mod 26, i=0, 1,25, 其中a与26互素. 维吉利亚(Vigenere)密码 把明文分成若干段, 每一段有n个数字, 密钥k=k1k2kn, 加密算法 E(i1i2in)=c1c2cn, 其中cj=(ij+kj)mod 26, ij=0,1,25, j=1, 2, n.,RSA公钥密码,私钥密码:加密密钥和解密密钥都必须严格保密 公钥密码 (W.Diffie,M.Hellman,1976 ):加密密钥公开,解密密钥保密 RSA公钥密码(R. Rivest, A. Shamir, L. Adleeman,1978) 取2个大素数p和q(pq), 记n=pq, (n)=(p1)(q1). 选择正 整数w, w与(n)互素, 设d=w1(mod(n). 将明文数字化, 分成若干段, 每一个明文段mn. 加密算法 c=E(m)=mwmod n, 解密算法 D(c)=cdmod n, 其中加密密钥w和n是公开的, 而p,q, (n)和d是保密的。