资源描述:
《1.3算法案例ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、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、纵队,结果有2人多余,接着下令排成5列纵队,结果又多出3人,随后他又下令改为7列纵队,这次又剩下2人无法成整行.在场的人都哈哈大笑,以为韩信不能清点出准确的人数,不料笑声刚落,韩信高声报告共有士兵2333人.众人听了一楞,不知道韩信用什么方法这么快就能得到正确的结果的.今天,我们将以这些古典案例的思想,设计出适宜计算机的运行程序,提高我们对基本算法结构和算法语句在实际中的运用能力.探究一,辗转相除法思考1:在小学中我们是如何求出两个正整数的最大公约数的呢?算法案例之求最大公约数求以下几组正整数的最大公约数。(注:若整数m和n满足n整除m,则(m,n)=n。用(m,n)来
3、表示m和n的最大公约数。)(1)(18,30)(2)(24,16)(3)(63,63)(4)(72,8)(5)(301,133)解:21824用公有质因数2除,3912用公有质因数3除,343和4互质不除了。得:18和24最大公约数是:2×3=6例、求18与24的最大公约数:6;8;63;8;7;短除法想一想,如何求8251与6105的最大公约数?思考2:对于8251与6105这两个数,它们的最大公约数是多少?你是怎样得到的?由于它们公有的质因数较大,利用上述方法求最大公约数就比较困难.有没有其它的方法可以较简单的找出它们的最大公约数呢?思考3:注意到8251=6105
4、×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,定义:所谓的辗转相除法,就是对于给定的两个数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的数对,继续上面
5、的除法,直到大数被小数除尽,则这是较小的数就是原来两个数的最大公约数辗转相除法求两个数的最大公约数,其算法可以描述如下:辗转相除法是一个反复执行直到余数等于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
6、,n的最大公约数等于m;否则,返回第二步.思考5:你能把辗转相除法编成一个计算机程序吗?程序框图开始输入m,n求m除以n的余数rm=nn=rr=0?是输出m结束否INPUTm,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND思考6:如果用当型循环结构构造算法,则用辗转相除法求两个正整数m、n的最大公约数的程序框图和程序分别如何表示?开始输入m,n求m除以n的余数rm=nr≠0?否输出m结束是n=rINPUTm,nWHILEr<>0r=mMODnm=nn=rWENDPRINTmEND练习:用辗转相除法求下列两数的最大公约数:(1)(225,135
7、)(2)(98,196)(3)(72,168)(4)(153,119)45982417二、更相减损术《九章算术》是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.”意思是:第一步:任意给定两个正整数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.第二步:以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个等数或这个数与约简的数的乘积就是所求的最大公约数.例1:用更相