1 / 21

1.3 算法案例

1.3 算法案例. 第一课时. 问题提出. 1. 研究一个实际问题的算法,主要从算法步骤、程序框图和编写程序三方面展开 . 在程序框图中算法的基本逻辑结构有哪几种?在程序设计中基本的算法语句有哪几种?. 2.“ 求两个正整数的最大公约数”是数学中的一个基础性问题,它有各种解决办法,我们以此为案例,对该问题的算法作一些探究. 辗转相除法与 更相减损术. 知识探究(一) : 辗转相除法. 思考 1: 18 与 30 的最大公约数是多少?你是怎样得到的?.

elaine-wade
Download Presentation

1.3 算法案例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1.3 算法案例 第一课时

  2. 问题提出 1.研究一个实际问题的算法,主要从算法步骤、程序框图和编写程序三方面展开.在程序框图中算法的基本逻辑结构有哪几种?在程序设计中基本的算法语句有哪几种? 2.“求两个正整数的最大公约数”是数学中的一个基础性问题,它有各种解决办法,我们以此为案例,对该问题的算法作一些探究.

  3. 辗转相除法与 更相减损术

  4. 知识探究(一):辗转相除法 思考1:18与30的最大公约数是多少?你是怎样得到的? 先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来即为最大公约数.

  5. 思考2:对于8251与6105这两个数,由于其公有的质因数较大,利用上述方法求最大公约数就比较困难.注意到8251=6105×1+2146,那么8251与6105这两个数的公约数和6105与2146的公约数有什么关系?

  6. 思考3:又6105=2146×2+1813,同理,6105与2146的公约数和2146与1813的公约数相等.重复上述操作,你能得到8251与6105这两个数的最大公约数吗?思考3:又6105=2146×2+1813,同理,6105与2146的公约数和2146与1813的公约数相等.重复上述操作,你能得到8251与6105这两个数的最大公约数吗? 8251=6105×1+2146, 6105=2146×2+1813, 2146=1813×1+333, 1813=333×5+148, 333=148×2+37, 148=37×4+0.

  7. 思考4:上述求两个正整数的最大公约数的方法称为辗转相除法或欧几里得算法.一般地,用辗转相除法求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计? 第一步,给定两个正整数m,n(m>n). 第二步,计算m除以n所得的余数r. 第三步,m=n,n=r. 第四步,若r=0,则m,n的最大公约数等 于m;否则,返回第二步.

  8. 思考5:该算法的程序框图如何表示? 开始 输入m,n 求m除以n的余数r m=n n=r 否 r=0? 是 输出m 结束

  9. 思考6:该程序框图对应的程序如何表述? 开始 输入m,n 求m除以n的余数r m=n n=r 否 r=0? 是 输出m 结束 INPUT m,n DO r=m MODn m=n n=r LOOP UNTILr=0 PRINT m END

  10. 思考7:如果用当型循环结构构造算法,则用辗转相除法求两个正整数m,n的最大公约数的程序框图和程序分别如何表示?思考7:如果用当型循环结构构造算法,则用辗转相除法求两个正整数m,n的最大公约数的程序框图和程序分别如何表示?

  11. 开始 输入m,n n=r m=n 求m除以n的余数r 是 n>0? 否 输出m 结束 INPUT m,n WHILE n>0 r=m MODn m=n n=r WEND PRINT m END

  12. 知识探究(二):更相减损术 思考1:设两个正整数m>n,若m-n=k,则m与n的最大公约数和n与k的最大公约数相等.反复利用这个原理,可求得98与63的最大公约数为多少? 98-63=35, 63-35=28, 35-28=7, 28-7=21, 21-7=14, 14-7=7.

  13. 思考2:上述求两个正整数的最大公约数的方法称为更相减损术.一般地,用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计?思考2:上述求两个正整数的最大公约数的方法称为更相减损术.一般地,用更相减损术求两个正整数m,n的最大公约数,可以用什么逻辑结构来构造算法?其算法步骤如何设计? 第一步,给定两个正整数m,n(m>n). 第二步,计算m-n所得的差k. 第三步,比较n与k的大小,其中大者用m表 示,小者用n表示. 第四步,若m=n,则m,n的最大公约数等于 m;否则,返回第二步.

  14. 开始 输入m,n 否 m≠n? 是 k=m-n m=k 输出m 否 n>k? 是 结束 m=n n=k 思考3:该算法的程序框图如何表示?

  15. 思考4:该程序框图对应的程序如何表述? 开始 输入m,n 否 m≠n? 是 k=m-n m=k 输出m 否 n>k? 是 结束 m=n n=k INPUT m,n WHILE m<>n k=m-n IF n>k THEN m=n n=k ELSE m=k END IF WEND PRINT m END

  16. “更相减损术”在中国古代数学专著《九章算术》中记述为: 可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之.

  17. 理论迁移 例1 分别用辗转相除法和更相减损术求168与93的最大公约数. 辗转相除法:168=93×1+75, 93=75×1+18, 75=18×4+3, 18=3×6.

  18. 更相减损术: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.

  19. 例2 求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.

  20. 小结作业 1.辗转相除法,就是对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,这时的较小的数即为原来两个数的最大公约数. 2. 更相减损术,就是对于给定的两个正整数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,继续上面的减法,直到差和较小的数相等,此时相等的两数即为原来两个数的最大公约数.

  21. 作业: P45练习:1. P48习题1.3A组:1.

More Related