高一数学课件:算法案例2.ppt
楚水实验学校高二数学备课组算法案例算法案例广义地说:广义地说:为了解决某一问题而为了解决某一问题而采取的方法和步骤,就称之为算法。采取的方法和步骤,就称之为算法。算法的概念算法的概念:一般而言,一般而言,对一类问题的机械的、统一的求解方法称为算法。知识回顾知识回顾 流流程程图图:是是由由一一些些图图框框和和流流程程线线组组成成的的,其其中中图图框框表表示示各各种种操操作作的的类类型型,图图框框中中的的文文字字和和符符号号表表示示操操作作的的内内容容,流流程程线线表表示示操操作作的的先先后后次次序。序。流程图的概念流程图的概念顺序结构及框图表示顺序结构及框图表示1.顺顺序序结结构构:像像上上面面这这种种算算法法是是依依次次进进行行多多个个处理的结构处理的结构称为顺序结构称为顺序结构.语句语句A语句语句B2.顺序结构的流程图顺序结构的流程图 顺顺序序结结构构是是最最简简单单、最最基基本本的的算算法法结结构构,语语句句与与语语句句之之间间,框框与与框框之之间间是是按按从从上上到到下下的的顺顺序序进进行行的的.它它是是由由若若干干个个处处理理步步骤骤组组成成的的,这这是是任任何何一一个个算算法法都都离离不开的基本结构不开的基本结构.选择结构选择结构也叫条件结构,是指在算法中通过对条件的也叫条件结构,是指在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构判断,根据条件是否成立而选择不同流向的算法结构右图此结构中包含一个判断框,右图此结构中包含一个判断框,根据给定的条件根据给定的条件P是否成立而选择是否成立而选择执行执行A框或框或B框无论框无论P条件是否条件是否成立,只能执行成立,只能执行A框或框或B框之一,框之一,不可能同时执行不可能同时执行A框和框和B框,也不框,也不可能可能A框、框、B框都不执行框都不执行开始开始S 1结束结束输出输出Si1SSii1i100NY直到型循环直到型循环pAYN当型循环当型循环pAYN结束结束输出输出SS 0开始开始i i+1S S+ii10YNi 0先执行,后判断:先执行,后判断:先判断,后执行:先判断,后执行:“N”进入循进入循环环“Y”进入循进入循环环循环结构循环结构循环结构循环结构已学过的伪代码中的几种基本算法语句已学过的伪代码中的几种基本算法语句:(1)赋值语句赋值语句:变量变量表达式或变量或常数表达式或变量或常数(2)输入语句输入语句:Read a,b(3)输出语句输出语句:(4)条件语句条件语句:Print a,bIf A Then B Else CEnd If 当型语句当型语句:While p循环体循环体End while直到型语句直到型语句:Do循环体循环体Until pEnd Do循环语句循环语句伪代码中的伪代码中的:pAYNpAYN当循环的次数已经确定,可用当循环的次数已经确定,可用“For”语句表示语句表示“ForFor”语句伪代码格式:语句伪代码格式:For I From “初值初值”To“终值终值”step“步步长长”End For3 59 15 在小学,我们学过求两个正整数的最大公约在小学,我们学过求两个正整数的最大公约数的方法,先用两个数公有的质因数连续去除,数的方法,先用两个数公有的质因数连续去除,一直到所得的商是互质数为止,然后把所以的除一直到所得的商是互质数为止,然后把所以的除数乘起来,例如,求数乘起来,例如,求18与与30的最大共约数:的最大共约数:18 3023 所以,所以,18与与30的最大共约数是:的最大共约数是:23=6.引入课题引入课题 利用找公约数的方法来求最大公约数,利用找公约数的方法来求最大公约数,如果公约数比较大而且根据我们的观察又不如果公约数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们能得到一些公约数,我们又应该怎样求它们的最大公约数?比如的最大公约数?比如求求82518251与与61056105的最大公的最大公约数约数?观察上面的式子,你有什么发现?你的发现,观察上面的式子,你有什么发现?你的发现,对我们解决对我们解决“求求8251与与6105的最大公约数的最大公约数”的的问题有什么帮助?问题有什么帮助?8251610512146;求求8251与与6105最大共约数最大共约数 求求6105与与2146最大共约数最大共约数化归化归6105214621813;214618131333;18133335148;333148237;1483740.148与与37的最大共约数是的最大共约数是37 8251与与6105的最大共约数是的最大共约数是37 以上我们求最大公约数以上我们求最大公约数的方法就是的方法就是辗转相除法辗转相除法,也,也叫欧几里德算法,它是由欧叫欧几里德算法,它是由欧几里德在公元前几里德在公元前300年左右年左右首先提出的首先提出的.练习练习:用用辗转相除法辗转相除法求求204与与85的最大公约数的最大公约数 你能把辗转相除法求最大共约数的过程,写成算法吗?你能把辗转相除法求最大共约数的过程,写成算法吗?l该算法中,要用到什么主要的算法结构?该算法中,要用到什么主要的算法结构?l每一次循环中所进行的是什么样的运算每一次循环中所进行的是什么样的运算?l循环何时结束?下一次循环的输入整数应该是什么?循环何时结束?下一次循环的输入整数应该是什么?循环结构循环结构 rmod(a,b)r=0abbrl这样交换数据的方式,前面我们学习过吗?这样交换数据的方式,前面我们学习过吗?在求菲波拉契数列中的数在求菲波拉契数列中的数请用自然语言描述该算法请用自然语言描述该算法!S1 输入两个正整数输入两个正整数a,b(ab););S2 若若Mod(a,b)0,则输出最大公约数,则输出最大公约数b,算法结束;,算法结束;否则否则r Mod(a,b),),a b,br,转,转S2S1 输入两个正整数输入两个正整数a,b(ab););S2 r Mod(a,b)S3 a bS4 br,S5 若若r不等于不等于0,转,转S2S6 输出最大公约数输出最大公约数a.Y开始开始Mod(a,b)0rMod(a,b)输出输出b结束结束Nabbr输入输入a,bN开始开始r0rMod(a,b)输出输出a结束结束Yabbr输入输入a,b将自然语言描述的算法改写为伪代码将自然语言描述的算法改写为伪代码!Read a,b While Mod(a,b)0 0 rmod(a,b)ab brEnd WhilePrint bRead a,b Do rmod(a,b)ab brUntil r=0Print a