- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.数论相关知识及基本算法
素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 素数和整除问题 * */22 * 第二课 数论相关知识及 基本算法 综合实践考核 1、基本概念和基本性质 (1)整除和约数 一个整数a能被另一个整数d整除,记作d|a。0可被每个整数整除。如果a0且d|a,则|d|=|a|。如果d|a,则称a是d的倍数。d是a的约数。一个整数a的约数最小为1,最大为|a|。每个整数a都可以被其平凡约数1和a整除。a的非平凡约数也称为a的因子。 整除有如下一些性质: 如果d|a,则对任意整数k有d|ka; 如果d|a且d|b,则d|(a±b); 如果b|a且a|b,则a=b; 如果d|a且a|c,则d|a。 具有自反、反对称和传递性,是一个偏序关系 下面举出几种特殊的整除的例子: 若2能整除a的最末位,旵2|a;若4能整除a的最后两位,则4|a;若8能整除a的最末3位,则8|a;……. 若5能整除a的最末位,则5|a;若25能整除a的最后两位,则25|a;若125能整除a的最末3位,则125|a;…….. 若3能整除a的各位数字之和,则3|a;若9能整除a的各位数字之和,则9|a; 若11能整除a的偶数数字之和与奇数数字之和的差,则11|a。 (2)素数和合数 大于1的正整数p,如果仅有的正因子是1和p,则称p为素数(prime)。大于1又不是素数的正整数称为合数(compound)。如果n为合数,那么n必有一个小于sqrt(n)的素因子。 (3)算法基本定理(惟一分解定理) 每个正整数都可以惟一地表示成素数的乘积,其中素数因子从小到大依次出现(这里的“乘积”可以有0个、1个或多个素因子)。 (4)除法的定义和同余 令a为整数,d为正整数,那么有唯一的整数q和r,其中0≤rd,使得a=dq+r。a称被除数,d称除数,q称商,r称余数。若a,b除以数c的余数相等,则称a和b关于c同余,记作a≡b(mod c)。 (5)最大公约数和最小公倍数 令a和b是不全为0的两个正整数,能使d|a和d|b的最大整数称为a和b的最大公约数,用gcd(a,b)表示。令a|d和b|d的最小正整数称为a和b的最小公倍数,用lcm(a,b)表示。有:ab=gcd(a,b)×lcm(a,b) 最大公约数有如下一些性质: 对任意整数a与b,如果d|a且d|b,则d|gcd(a,b); 对所有整数a和b以及任意负整数n,gcd(an,bn)=ngcd(a,b); 对所有正整数d,a和b,如果d|ab并且gcd(a,d)=1,则d|b; 如果q和r是a除以b的商和余数,即a=b×q+r,则gcd(a,b)=gcd(b,r)。 2、素数的判定 (1) Eraosthenes氏筛法 每次求出一个新的素数,就把n以内的所有倍数都筛去。实现时,对素数p,只需要筛去p×p,p×(p+1),…等就可以了。 #include stdio.h #include malloc.h #include math.h int main(void) { int *a,i,k,n,s; while(scanf(%d,n)==1) { if(n2) continue; a=(int *)malloc((n+1)*sizeof(int)); for(i=2;i=n;i++) //为便于操作,舍前2两个元素未用 a[i]=1; k=1; s=(int)sqrt((double)n); while(k=s) { while(a[++k]==0);//找到下一个素数 for(i=k*k;i=n;i+=k)//删除该素数的倍数 a[i]=0; } for(i=2;i=n;i++)//输出 if(a[i]==1) printf(%8d,i); printf(\n); free(a); } return 0; } 上述算法存在同一个数多次筛选的问题,那么怎样才能一个数只被筛一次呢?留为课后作业。 (2)朴素的判别法。从2开始试除小于n的所有自然数。请大家写出判别函数,并写出测试程序。 (3)注意到若a是n的因子,那么n/a也是n的因子,所以若n有一个大于1的真因子,则它必有一个不大于n1/2的因子。 (4)更进一步的,若n是合数,它必有一个素因子不大于n1/2。如果要检测一个M以内的数是否为素数,需要先
您可能关注的文档
- 2015-2016学年高一外研版英语必修一课件Module-6The-Internet-and-Telecommunications《Grammar》.ppt
- 2015-2016学年高中语文-1.3-阿房宫赋课件-鲁人版必修4.ppt
- 2015-2016学年高二历史人民版选修1课件专题六-穆罕黙·德阿里改革.ppt
- 2015-2016高中历史岳麓版选修1课件13《穆罕默德·阿里改革》.ppt
- 2015-2016牛津译林版英语四上·Project2-My-snack-bar课件Period2.ppt
- 2015-2016高二政 治课件专题4《民 主集中制-我国人民代表 大会制度的组织和活动原则》专题整合.ppt
- 2015.4.4二维焊接仿真.ppt
- 2015世界大学排名前50.ppt
- 2015中考化学专题复习课件-燃烧和灭火.ppt
- 2015中考思品复习精讲精练题6.ppt
文档评论(0)