离散数学课件–第2章–4.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学课件–第2章–4

第二章 算法基础 2.1 Algorithms算法 2.2 Complexity of Algorithms算法的复杂性 2.3 The Integers and Division整数和除法 2.4 Integers and Algorithm整数和算法 2.5 Applications of Number Theory数论的应用 2.6 Matrices矩阵 2.7 Recursion 递归 The Euclidean Of Algorithms 欧几里德算法 Representations Of Integers 整数表示 Algorithms For Integers Operations整数运算算法 上一节中的用整数的素因子分解求两个整数最大公约数的算法效率不高 古希腊数学家欧几里德,在他的书《Elements》中记载了效率更高的方法 欧几里德算法 求解gcd(91,287) 用两数中的小者91去除两数中的大者287 287=91×3+14 91和287的任何公约数必定是287-91×3=14的因数 91和14的任何公约数也必定是287=91×3+14的因数 287和91的最大公约数和91与14的最大公约数相同 求gcd(91,287)的问题已被化简为 gcd(91,14)的问题 例 用欧几里德算法求414和622的最大公约数 解 662=414×1+248 414=248×1+166 248=166×1+82 66=82×2+2 因此,gcd(414,662)=2 欧几里德算法伪码 Procedure gcd(a,b:正整数) x:= a y:= b While y≠0 Begin r:=x mod y x:= y y:= r end {gcd(a,b)是x} 时间复杂性O(logb) x和y的初值分别是a和b。在过程的每一步都是x用y代替,而y用x mod y代替,x mod y即是x被y除的余数。只要y≠0,这个过程就重复下去。当y=0时算法终止,此时x的值,也就是这一过程中最后一个非零余数,即为a和b的最大公约数。 The Euclidean Of Algorithms 欧几里德算法 Representations Of Integers 整数表示 Algorithms For Integers Operations整数运算算法 基本概念 二进制转为十进制 十六进制 八进制 十进制转二进制 一般进制 生活中其实很多地方的计数方法都多少有点不同进制的影子。 我们最常用的10进制,起源于人有10个指头。 至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。 还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… 定理1 令b为大于1的正整数。那么如果n是个正整数,就可以唯一地表示为下面的形式: n=akbk+ak-1bk-1+…+a1b+a0 其中k是个非负整数,a0,a1…ak是小于b的非负整数,ak≠0 Theorem 1 Let b be a positive integer greater than 1 . Then if n is a positive integer , it can be expressed uniquely in the form n=akbk+ ak-1bk-1 + · · ·+ a1b +a0, where k is a nonnegative integer, a0, a1,…,ak are nonnegative integers less than b,and ak≠0. 2进制,用两个阿拉伯数字:0、1; 8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; 10进制,用十个阿拉伯数字:0到9; 16进制,用十六个阿拉伯数字……等等 数据在计算机中的表示最终以二进制的形式存在 二进制数表示数码很长: 比如int 类型占用4个字节,32位。 比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,非常麻烦  用16进制或8进制可以解决这个问题。 因为,进制越大,数的表达长度也就越短。 为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 基本概念 二进制转为十进制 十六进制 八进制 十进制转二进制 一般进制 2、8、16,分别是2的1次方,3次方,4次方。 这一点使得三种进制之间可以非常直接地互相转换

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档