国际大学生程序设计竞赛--数论与算法.pptVIP

国际大学生程序设计竞赛--数论与算法.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数论基本知识 信息学中应用的关于素数和整除的知识并不多,关键在于灵活应用。 素数和整除问题 如果a和b是整数,a≠0,若有整数c使b=ac,就说a整除b。在a整除b时,记a是b的一个因子,b是a的倍数。用符号a∣b表示a整除b,a不能整除b记为a ⊥b。 整除基本性质有: (1)若a∣b, a∣c,则a∣(b+c) (2)若a∣b,则对所有整数c, a∣bc (3)若a∣b, b∣c,则a∣c (传递性) 自反,反对称,传递性,偏序关系。 ∣,Z 是一个格。 素数(prime)和合数(compound),如果一个整数p只有1和p两个因子,则p为素数,不为素数的其它数为合数。如果n为合数,则n必有一个小于或等于n的平方根的数因子。 算术基本定理:每个正整数都可以唯一地表示成素数的乘积。其中素数因子从小到大依次出现。 数论基本知识 除法的定义和同余 a=dq+r。 同余:a≡b(mod c) 最大公约数gcd(a,b) 最小公倍数lcm(a,b) ab=gcd(a,b)×lcm(a,b) 如果gcd(a,b)=1,则a与b互素。 数论基本知识 1。如何求出1~n中的所有素数? Eraosthenes氏筛法:每次求出一个新的素数,就把n以内的它的所有倍数都筛去。 2。给出一个数n,如何判断它是不是素数? 1)朴素的判别法 从2开始试除小于n的所有自然数,时间复杂度为O(n). 2) 如果a是n的因子,那么n/a也是n的因子,所以如果n有一个大于1的真因子,则它必有一个不大于n1/2的因子,时间复杂度O(n1/2)。 等等。这些方法太慢。 伪素数:如果n是一个正整数,并且存在和n互素的正整数a满足an-1 ≡ 1(mod n), 我们说n是基于a的伪素数。如果一个数是伪素数,它几乎肯定是素数。另一方面,如果一个数不是伪素数,它一定不是素数。 数论基本知识 Miller-Rabbin测试 function Miller-Rabbin(n:longint):boolean; begin for i:=1 to s do Begin a:=random(n-2)+2; If modular_exp(a,n-1,n)1 then return false; end; End; return true; End; 这是一个概率型算法,属于Monte-Carlo算法系列。 时间复杂度为O(s×log3n)。 最大公约数的求法 欧几里德辗转相除法 function gcd(a,b:longint):longint; Begin if b=0 then gcd:=a; else gcd:=gcd(b, a mod b); End; 扩展的欧几里德算法 如果(a,b)=d,那么一定存在x,y满足ax+by=d。 Function extended_gcd(a,b:longint; Var x,y:longint):longint; Begin if b=0 then begin extended_gcd:=a; x:=1; y:=0; end else begin extended_gcd:=extended_gcd(b, a mod b); t:=x; x:=y; y:=t-(a div b) * y; end; End; 佳佳的困惑 题目:给出一个数N,含数字1,2,3,4,把N的所有数字重新排列一下组成一个新数,使它是7的倍数。 分析:把数字1,2,3,4从中抽出,然后把其他数字按照原顺序排列组成的自然数w,w×10000整除7取余有7种可能,即是0,1,2,3,4,5,6。如果能把1,2,3,4排列出7个数,使它们整除7取余的值分别为0,1,2,3,4,5,6,把这4位数接在w后面即为问题的解。 除法表达式 题目:除法表达式有如下的形式:X1/X2/X3/…/Xk.其中Xi是正整数且X≤1000 000 000(1≤i≤k,k≤10 000)。除法表达式应当按照从左到右的顺序计算。可以在表达式中嵌入顺序。现在给一个除法表达式E要求告诉是否可以通过增加括号使表达式为E‘,E’是整数。 分析: 显然X1为分子,X2比为分母,其它数可以为分子也可以为分母。 方法一:将分母X2分解质因数,由于X2≤1000000000,所以质因数个数不超过29个。逐一扫描X1,X3,X4…,Xk,

您可能关注的文档

文档评论(0)

wangxing1张 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档