【11】数论

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(0 r n )
例如, 20 mod 6=2, 13 mod 4=3, 10 mod 2=0 定义(整除):在上式中,如果 r=0,则表示m可以被n整除, m=qn,记为 n|m, n称为m的因子。
3
定理(整除的性质):设a,b,c是整数
性质1 若a |b且a |c, 则 x, y, 有a | xb+yc.
由a | m, a | M, 及r=mqM, 可推出a | r. 同理, 有b | r. 即, r是a
和b的公倍数. 根据最小公倍数的定义, 必有r=0. 得证M | m. (2) 记D=gcd(a,b), 令m=lcm(d,D). 若m=D, 自然有d |D, 结
论成立. 否则m>D, 注意到d |a, D|a, 由(1), 得m |a. 同理, m |b.
8686
72382
620421
13
梅森数(Marin Mersenne): 当p为素数时,称具有 2p1形式的数为梅森数。 梅森数可能是素数, 也可能是合数: 221=3, 231=7, 251=31, 271=127都是素数, 而2111=2047=23×89 是合数.到2000左右找到的最大梅森素数是 2134669171, 有4百万位. 注:当n是合数时, 2n1一定是合数, 2ab1=(2a1)(2a(b1)+2a(b2)+…+2a+1).
即, m是a和b的公因子, 与D是a和b的最大公约数矛盾.
28
利用整数的素因子分解, 求最大公约数和最小公倍数. 设
rk r1 r2 sk s1 s2 a p1 p2 pk , b p1 p2 pk , 其中p1,p2,…,pk是不同的素数, r1,r2,…,rk,s1,s2,…,sk是非负
整数. 则 min( rk , sk ) min( r1 , s1 ) min( r2 , s2 ) gcd(a,b)= p1 p2 pk ,
max( rk , sk ) max( r1 , s1 ) max( r2 , s2 ) p p p lcm(a,b)= 1 2 k
例:求150和220的最大公约数和最小公倍数. 解 150=2×3×52, 168=23×3×7. gcd(150,168)=21×31×50×70=6, lcm(150,168)=23×31×52×71=4200.
12
有多少个素数?
定理(素数分布定理):设 (n )表示小于等于n的素 数个数,则当 n 67 时,有下式成立: 3 n 1 ln n ln n 2 n 2
n
103
168
104
1229
105
9592
106
78498
107
664579
n
n/ln(n)
145
1086
4
常见数的整除特征
⑪ 能被2,4,5,8 整除的数的特征
⑫ 能被3,9 整除的数的特征
⑬ 能被11整除的数的特征
5
例题解析:
6
7
8
素数:整数p>1,在正整数集合中,只有1和p自身能整 数p,
则称p为素数。
合数: 大于1且不是素数
例如, 2,3,5,7,11是素数, 4,6,8,9是合数. 素数性质:
结论:161是合数. 特点:不需要用小于
a 的所有整数去除a
17
素数生成
【例】埃拉托斯特尼(Eratosthene)筛法 对素数的研究从古至今都是数学家的最大乐趣,大约在 公元前250年,古希腊数学家埃拉托斯特尼(Eratosthenes)提 出一个求不超过正整数N的素数的构造性方法,为了纪念塔, 后人称这个算法为埃拉托斯特尼筛法。 算法思想:为了说明问题,研究[2,45]素数 ⑪ 首先,2是最小的素数,所有能被2整除的数(偶数)一 定不是素数。删除这些偶数
3 5 7 11 13 17 19 23 29 31 37 41 43
⑭下一个最小的素数是7,用7作筛子,将所有能被7整除的数筛掉
3 5 7 11 13 17 19 23 29 31 37 41 43
下一个最小的素数应该是11,由于11>sqrt(45),所以我们可以 确认,表中剩下的没有合数了,全部是素数。
性质1 a>1是合数当且仅当a=bc, 其中1<b<a, 1<c<a.
性质2 合数必有素数因子. 性质3 如果d>1, p是素数且d | p, 则d=p.
性质4 设p是素数且p | ab, 则必有p | a 或者 p | b.
设p是素数且p | a1a2…ak, 则必存在1≤i≤k, 使得p| ai. 注意:当d不是素数时,d | ab不一定能推出d | a或d | b.
14
素数判定
在C语言中学过的素数判定的基本方法?
定理:如果a是合数, 则a必有小于等于
a 的真因子.
证: 如果a是合数,则a可表示成 a=bc, 其中1<b<a, 1<c<a. 显然, b和c中必有一个小于等于 a . 否则, bc>( a )2=a, 矛盾.
15
根据上述的定理和推论,写出素数判定算法:
if(cnt%8==0) //每行输出8个素数 printf("%-8d\n",prime[i]); else printf("%-8d",prime[i]);
} printf("\n1~%d之间的素数个数=%d\n",n,cnt); }
23
大素数的判定(素数产生)?
Rabin-Miller 梅森素数
22
void main() { int prime[10000]; int i,n,cnt;
printf("输入整数n(1~n):"); scanf("%d",&n); erat_sieve(prime,n);
cnt=0; //cnt用于统计prime总的素数个数 for(i=0;i<n/2;i++) if(prime[i]){ cnt++;
16
例: 判断157和161是否是素数. 解 157 , 161 都小于13, 小于13的素数有: 2, 3, 5, 7, 11. 检查结果如下: 2∤157, 3∤157, 5∤157, 7∤157, 11∤157 结论: 157是素数.
2∤161, 3∤161, 5∤161, 7|161(161=7×23)
r3={0,1,2};
r4={0,1}
因此21560的正因子个数=4*2*3*2=48 个
11
有多少个素数?
定理(无最大素数定理):有无穷多个素数,或无最大
素数
证明(欧几里德):反证法,设有有穷多个素数,从小到大
排列为这p1,p2,p3,…,pn, pn是这些素数中最大的素数。 令:m=p1p2p3…pn+1 ,显然,pi不能整除m, 因此,或者m是素数,或者存在比pn大的整数能整除m。 无论哪种情况,都与假设矛盾。所以有无穷多个素数。
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
⑫下一个最小的素数是3,删除所有能被3整除的数
3 5 7 11 13 17 19 23 25 29 31 35 37 41 43
18
⑬下一个最小的素数是5,用5作筛子,将所有能被5整除的数筛掉
21
void erat_sieve(int prime[],int n) { int i,m,k; prime[0]=2; n=n/2; for(i=1;i<n;i++) //数组prime初始化 prime[i]=2*i+1; m=sqrt(n); k=1; while(prime[k]<m) k=sieve(prime,n,k); //用prime[k]作筛子 }
数论基础
河海大学物联网学院
丁海军
1
1 素数 2 最大公约数与最小公倍数
3 同余
4 一次同余方程
5 欧拉定理和费马小定理
2
1 素数
定理(整数表示):如果m和n是整数,n>0,则存在整数q和r,
0<=r<n;使得 m=qn+r。其中,m称为被除数,n为除
数,q为商,r为余数
m qn r 余数:r m modn
9
算术基本定理
定理(算术基本定理,整数分解定理):任何正整数n>1,可以写成
n p1 p2 p3 ... ps
k1
k2
k3
ks
p1 p2 ps 是不同的素数 k1 , k 2 , k s 是正整数 例:30=2*3*5
117=32*13 21560=23*5*72*11 71213=17*59*71 1024=210
24
2 最大公约数和最小公倍数
25
2 最大公约数和最小公倍数
概念
定义(最大公约数)源自文库设a,b是正整数,同时有k1,k2,…,kn也是正
整数,如果(k1|a, k1|b),(k2|a, k2|b),…,(kn|a, kn|b),则称
k1,k2,…kn为a,b的公约数,而 d=max(k1,k2,k3,…,kn)为a,b的 最大公约数。记 GCD(a,b)=d表示a,b的最大公约数。 显然,对任意的正整数a, GCD(a,0)=a, GCD(a,1)=1 例:12,18的公约数有 1,2,3,6 , 其最大公约数是6
性质2 若a |b且b |c, 则a |c.
性质3 设 m≠0, 则 a |b 当且仅当 ma | mb.
性质4 若a | b且b | a, 则a=±b. 性质5 若a | b且b≠0, 则|a|≤|b|. 性质8 若a≠b,n是自然数,则(a-b)|(an-bn). 性质9 若a≠-b,n是正偶数,则(a+b)|(an-bn). 性质10 若a≠-b,n是正奇数,则(a+b)|(an+bn).
10
推论:设 n p1 1 p2 2 ps s , p1 , p2 , ps是互不相同的素数,则 正整数 d是n的因子的充分必要条件 是 d p1 1 p2 2 ps s , 其中,0 ri ki
r r r
k
k
k
例:21560有多少个正因子? 解:21560=23*5*72*11 根据推论,r1={0,1,2,3} ; r2={0,1}
int is_prime(int x) //判定x是否是素数
{ int m;
if(x==2) return 1; return 0; if(x%2==0)
m=sqrt(x);
for(i=3;i<=m;i++) if (x%i==0)
return 0;
return 1; }
只能适用于比较 小的整数的判定
19
begin 初始化数组prime; 初始化 k=1; while(prime[k]<sqrt(n)){ k=sieve(prime,n,k); //用prime[k]作筛子,对数组prime作筛选 } output(prime); end
20
算法的核心在函数sieve,该函数细化求精如下: int sieve(int prime[],int n,int k) { int i; for(i=k+1;i<n; i++) if(prime[i] && prime[i]%prime[k]==0) prime[i]=0; k++; //求的下一个可用的筛下标 while(prime[k]==0) k++; return k; }
26
定义(最小公倍数):设a,b是两个非0正整数,如果a|k,b|k , 则
称k是a,b的公倍数。a与b有无穷多个公倍数,其中最
小的正的公倍数叫最小公倍数。记作e=LCM(a,b) 显然,LCM(a,1)=a 例:LCM(12,18)=36
27
定理: (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, 0≤r<M.
意整数。(含义:a与b的最大公约数可以表示为a与b的线性 组合)
30
定义(互素):如果gcd(a,b)=1,则称a,b互素
31
求最大公约数的算法--辗转相除法
gcd(a,b)=gcd(b,r1)
29
几个定理
定理1(最大公约数定理):设a=qb+r,其中,a,b,q,r都是整数,
则 gcd(a,b)=gcd(b,r)
定理2:如果a,b都是整数,则gcd(a,b)=gcd(b,b+a)
gcd(a,b)=gcd(b,b-a)
定理3:如果a,b都是整数,d=gcd(a,b),则d=as+bt,这里s,t是任
相关文档
最新文档