




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 3算法案例 1 3 4十进制化k进制 1 3 1辗转相除法和更相减损术 1 3 2秦九韶算法 1 3 3k进制化十进制 1 3算法案例 1 3 1辗转相除法和更相减损术 复习 1 研究一个实际问题的算法 主要从哪几方面展开 2 在程序框图中算法的基本逻辑结构有哪几种 3 在程序设计中基本的算法语句有哪几种 算法步骤 程序框图和编写程序三方面展开 顺序结构 条件结构 循环结构 输入语句 输出语句 赋值语句 条件语句 循环语句 情境创设 韩信是秦末汉初的著名军事家 据说有一次汉高祖刘邦在卫士的簇拥下来到练兵场 刘邦问韩信有什么方法 不要逐个报数 就能知道场上的士兵的人数 韩信先令士兵排成3列纵队 结果有2人多余 接着下令排成5列纵队 结果又多出3人 随后他又下令改为7列纵队 这次又剩下2人无法成整行 在场的人都哈哈大笑 以为韩信不能清点出准确的人数 不料笑声刚落 韩信高声报告共有士兵2333人 众人听了一楞 不知道韩信用什么方法这么快就能得到正确的结果的 今天 我们将以这些古典案例的思想 设计出适宜计算机的运行程序 提高我们对基本算法结构和算法语句在实际中的运用能力 探究一 辗转相除法 思考1 在小学中我们是如何求出两个正整数的最大公约数的呢 算法案例之求最大公约数 求以下几组正整数的最大公约数 注 若整数m和n满足n整除m 则 m n n 用 m n 来表示m和n的最大公约数 1 18 30 2 24 16 3 63 63 4 72 8 5 301 133 例 求18与24的最大公约数 6 8 63 8 7 短除法 想一想 如何求8251与6105的最大公约数 思考2 对于8251与6105这两个数 它们的最大公约数是多少 你是怎样得到的 由于它们公有的质因数较大 利用上述方法求最大公约数就比较困难 有没有其它的方法可以较简单的找出它们的最大公约数呢 思考3 注意到8251 6105 1 2146 那么8251与6105这两个数的公约数和6105与2146的公约数有什么关系 我们发现6105 2146 2 1813 同理 6105与2146的公约数和2146与1813的公约数相等 思考4 重复上述操作 你能得到8251与6105这两个数的最大公约数吗 2146 1813 1 333 148 37 4 0 333 148 2 37 1813 333 5 148 8251 6105 1 2146 6105 2146 2 1813 定义 所谓的辗转相除法 就是对于给定的两个数 用较大的数除以较小的数 若余数不为零 则将余数和较小的数构成新的数对 继续上面的除法 直到大数被小数除尽 则这是较小的数就是原来两个数的最大公约数 辗转相除法求两个数的最大公约数 其算法可以描述如下 辗转相除法是一个反复执行直到余数等于0停止的步骤 这实际上是一个循环结构 思考4 辗转相除直到何时结束 主要运用的是哪种算法结构 如此循环 直到得到结果 输入两个正整数m和n 求余数r 计算m除以n 将所得余数存放到变量r中 更新被除数和余数 m n n r 判断余数r是否为0 若余数为0则输出结果 否则转向第 步继续循环执行 第一步 给定两个正整数m n m n 第二步 计算m除以n所得的余数r 第三步 m n n r 第四步 若r 0 则m n的最大公约数等于m 否则 返回第二步 思考5 你能把辗转相除法编成一个计算机程序吗 程序框图 inputm n do r mmodn m n n r loopuntilr 0 printm end 思考6 如果用当型循环结构构造算法 则用辗转相除法求两个正整数m n的最大公约数的程序框图和程序分别如何表示 inputm n whiler0 r mmodn m n n r wend printm end 练习 用辗转相除法求下列两数的最大公约数 1 225 135 2 98 196 3 72 168 4 153 119 45 98 24 17 二 更相减损术 九章算术 是中国古代的数学专著 其中的 更相减损术 也可以用来求两个数的最大公约数 即 可半者半之 不可半者 副置分母 子之数 以少减多 更相减损 求其等也 以等数约之 意思是 第一步 任意给定两个正整数 判断它们是否都是偶数 若是 用2约简 若不是 执行第二步 第二步 以较大的数减去较小的数 接着把差与较小的数比较 并以大数减小数 继续这个操作 直到所得的数相等为止 则这个等数或这个数与约简的数的乘积就是所求的最大公约数 例1 用更相减损术求98与63的最大公约数 98 63 35 14 7 7 21 7 14 28 7 21 35 28 7 63 35 28 因为63不是偶数 所以 所以最大公约数是7 例2分别用辗转相除法和更相减损术求168与93的最大公约数 168 93 1 75 93 75 1 18 75 18 4 3 18 3 6 辗转相除法 更相减损术 168 93 75 93 75 18 75 18 57 57 18 39 39 18 21 21 18 3 18 3 15 15 3 12 12 3 9 9 3 6 6 3 3 例3用更相减损术求80与36的最大公约数 例4求325 130 270三个数的最大公约数 因为325 130 2 65 130 65 2 所以325与130的最大公约数是65 因为270 65 4 10 65 10 6 5 10 5 2 所以65与270最大公约数是5 故325 130 270三个数的最大公约数是5 练习 用更相减损术求两个正整数m n的最大公约数 可以用什么逻辑结构来构造算法 其算法步骤如何设计 第一步 给定两个正整数m n m n 第二步 计算m n所得的差k 第三步 比较n与k的大小 其中大者用m表示 小者用n表示 第四步 若m n 则m n的最大公约数等于m 否则 返回第二步 讨论 该算法的程序框图如何表示 讨论 该程序框图对应的程序如何表述 inputm n whilem n k m n ifn kthen m n n k else m k endif wend printm end 1 辗转相除法 小结 2 更相减损术 布置作业 p45练习 1 p48习题1 3a组 1 1 3 2秦九韶算法 1 什么是辗转相除法和更相减损术 2 辗转相除法和更相减损术 是求两个正整数的最大公约数的优秀算法 我们将算法转化为程序后 就可以由计算机来执行运算 实现了古代数学与现代信息技术的完美结合 复习 探究三 秦九昭算法 思考1 在初中 我们是如何求一个多项式的值的 思考2 已知一个n次多项式f x anxn an 1xn 1 a1x a0当x x0时 除了用代入法求解外是否还有更好的方法呢 秦九韶算法的基本思想 思考1 对于多项式f x x5 x4 x3 x2 x 1 求f 5 的值 4 3 2 1 10次乘法运算 5次加法运算 分析 把5代入多项式 若先计算各项的值 然后再相加 那么一共要做 思考2 另一种做法是先计算x2的值 然后依次计算x2 x x2 x x x2 x x x的值 这样每次都可以利用上一次计算的结果 这时一共做了 4次乘法运算 5次加法运算 思考3 有没有更有效的算法呢 利用后一种算法求多项式f x anxn an 1xn 1 a1x a0的值 这个多项式应写成哪种形式 f x anxn an 1xn 1 a1x a0 anxn 1 an 1xn 2 a2x a1 x a0 anxn 2 an 1xn 3 a2 x a1 x a0 anx an 1 x an 2 x a1 x a0 这就是我国南宋时期数学家秦九韶在他的著作 数书九章 中提出的算法 思考4 对于f x anx an 1 x an 2 x a1 x a0 由内向外逐层计算一次多项式的值 其算法步骤如何 第一步 计算v1 anx an 1 第二步 计算v2 v1x an 2 第三步 计算v3 v2x an 3 第n步 计算vn vn 1x a0 上述方法称为秦九韶算法 思考5 在秦九韶算法中 记v0 an 那么第k步的算式是什么 vk vk 1x an k k 1 2 n 解 f x 4x 2 x 3 5 x 2 6 x 1 7 x 0 8 v1 4 5 2 22 v2 22 5 3 5 113 5 v3 113 5 5 2 6 564 9 v4 564 9 5 1 7 2826 2 v5 2826 2 5 0 8 14130 2 所以f 5 14130 2 例1已知一个5次多项式为用秦九韶算法求f 5 的值 练习 阅读下列程序 说明它解决的实际问题是什么 input x an 0y 0whlen 5y y n 1 a nn n 1wendprintyend 求多项式在x a时的值 二 秦九韶算法的程序设计 思考1 用秦九韶算法求多项式的值 可以用什么逻辑结构来构造算法 其算法步骤如何设计 第一步 输入多项式的次数n 最高次项的系数an和x的值 第二步 令v an i n 1 第三步 输入i次项的系数ai 第四步 v vx ai i i 1 第五步 判断i 0是否成立 若是 则返回第三步 否则 输出多项式的值v 程序框图 讨论 请参照程序框图 写出该算法程序 input n n input an a input x x v a i n 1 whilei 0 input ai a v v x a i i 1 wend printv end print i i 小结 2 计算机的一个很重要的特点就是运算速度快 但评价算法好坏的一个重要标志是运算的次数 如果一个算法从理论上需要超出计算机允许范围内的运算次数 那么这样的算法就只能是一个理论算法 在多项式求值的各种算法中 秦九韶算法是一个优秀算法 1 秦九韶算法计算多项式的值及程序设计 布置作业 p45练习 2 p48习题1 3a组 2 1 3 3k进制化十进制 1 简述辗转相除法和更相减损术的用途及内容 2 秦九韶算法的用途及内容 将这些算法转化为程序 就可以由计算机来完成相关运算 复习 进位制的概念 进位制是为了计数和运算方便而约定的记数系统 约定满二进一 就是二进制 满十进一 就是十进制 七天为一周 就是七进制 十二个月为一年 就是十二进制 六十秒为一分钟 六十分钟为一个小时 就是六十进制 等等 一般地 满几进一 就是几进制 思考1 十进制使用0 9十个数字 那么二进制 五进制 七进制分别使用哪些数字 在十进制中10表示十 在二进制中10表示2 一般地 若k是一个大于1的整数 则以k为基数的k进制数可以表示为一串数字连写在一起的形式 anan 1 a1a0 k 满k进一 就是k进制 其中k称为k进制的基数 那么k是一个什么范围内的数 与十进制类似 其它的进位制也可以按照位置原则计数 思考2 其中各个数位上的数字an an 1 a1 a0的取值范围如何 例如 十进制数3721表示的数可以写成 110011 2 1 25 1 24 0 23 0 22 1 21 1 20 51 5671 8 5 83 6 82 7 81 1 80 3001 例1 把二进制数110011 2 化为十进制数 练习 把八进制数5671 8 化为十进制数 3 103 7 102 2 101 1 100 探究 如何将k进制数anan 1 a1a0 k 写成各数位上的数字与基数k的幂的乘积之和的形式 讨论 在二进制中 0 0 0 1 1 0 1 1的值分别是多少 anan 1 a1a0 k an kn an 1 kn 1 a1 k1 a0 k0 例2 二进制数110011 3 化为十进制数是什么数 110011 3 讨论 anan 1 a1a0 2 中ai化为十进制数是什么数 1 35 1 34 0 33 0 32 1 31 1 30 243 81 3 1 328 ai2i 1 练习 将下列各进制数化为十进制数 1 10304 4 2 4321 5 10304 4 1 44 3 42 4 40 308 4321 5 4 53 3 52 2 51 1 50 586 探究 如何改进上述算法 把其他进位制化为十进制数 请举例说明 例3 设计一个算法 把2进制数a 共有n位 化为十进制数b 并转化成程序框图 写出程序 第二步 令b 0 i 1 第四步 判断i n是否成立 若是 则执行第五步 否则 返回第三步 第一步 输入a 2和n的值 第三步 b b ai2i 1 i i 1 第五步 输出b的值 练习 设计一个算法 把k进制数a 共有n位 化为十进制数b 第二步 令b 0 i 1 第四步 判断i n是否成立 若是 则执行第五步 否则 返回第三步 第一步 输入a k和n的值 第三步 b b aiki 1 i i 1 第五步 输出b的值 程序框图 input a k n a k n b 0 i 1 t amod10 do b b t k i 1 a a 10 t amod10 i i 1 loopuntili n printb end 例4 已知20a1 2 b10 3 求数字a b的值 所以2a 17 9b 3 即9b 2a 14 20a1 2 2 23 a 2 1 2a 17 b10 3 b 32 1 3 9b 3 故a 2 b 2 1 k进制数使用0 k 1 共k个数字 但左侧第一个数位上的数字 首位数字 不为0 小结 布置作业 p48习题1 3b组 1 1 3 4十进制化k进制 1 满几进一 就是几进制 2 k进制使用0 1 k 1这k个数字 3 k进制数化为十进制数的一般算式 anan 1 a1a0 k an kn an 1 kn 1 a1 k1 a0 k0 复习 4 利用k进制数化十进制数的一般算式 可以构造算法 设计程序 通过计算机就能把任何一个k进制数化为十进制数 练习 把二进制数100101 2 化为十进制数 100101 2 25 22 1 37 讨论 怎样把十进制数89化为二进制数 例1 把十进制数89化为二进制数 观察下面的算式你有什么发现吗 89 2 2 2 2 2 2 1 1 0 0 1 1 26 0 25 1 24 1 23 0 22 0 21 1 20 1011001 2 根据二进制 满二进一 的原则 可以用2连续去除89或所得商 然后取余数 例1 把十进制数89化为二进制数 上述化十进制数为二进制数的算法叫做除2取余法 练习 把十进制数196化为五进制数 除二取余法也可以推广为把十进制数化为k进制数的算法 称为除k取余法 196 1241 5 若十进制数a除以k所得的商是q0 余数是r0 即a k q0 r0 q0除以k所得的商是q1 余数是r1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理人文关怀教学课件
- 新郎新娘发言稿
- 家庭牧场发言稿
- 感人的发言稿
- 2025版西餐厅厨房承包服务与食材供应协议
- 2025版金融创新项目担保股权合作协议
- 二零二五年度电商代运营服务与品牌战略规划合同
- 二零二五年度电商行业风险预警服务合同
- 二零二五年度山林旅游项目承包经营合同
- 2025版冷链进口货物运输保险预约合同
- 产科医患沟通培训
- pmc内部培训课件
- 品质部规章管理制度
- 妊娠患者非产科手术麻醉管理要点
- 《小学数学新课程标准》的学习笔记
- 创伤中心各种管理制度
- CJ/T 409-2012玻璃钢化粪池技术要求
- 配送企业配送协议书
- 2024年注会考试《税法》真题及答案
- 肩关节镜护理课件
- 2025年公共行政管理理论知识考试卷及答案
评论
0/150
提交评论