算法案例1-辗转相除法

合集下载

四个经典的算法案例

四个经典的算法案例

四个经典的算法案例案例1:辗转相除法,又名欧几里德算法,它是用来求两个正整数最大公因数的一种方法。

例:用辗转相除法求8251与6105的最大公约数∵ 8251÷6105=1 余 21466105÷2146=2 余 18132146÷1813=1 余 3331813÷ 333=5 余 148333 ÷ 148=2 余 37148 ÷ 37=4∴ 37是8251与6105的最大公约数程序框图如下:其中 r = mod(a, b) r表示a÷b的余数案例2:秦九韶算法,它是中国南宋时期数学家秦九韶提出的,用来解决多项式的求值问题,在西方被称作霍纳算法。

首先看一道例题:求多项式f(x)=2x5―5x4―4x3+3x2―6x+7当x=5时的值。

根据秦九韶算法:f(x)可表示为f(x)=({[(2x―5)x―4]x+3}x―6)x+7于是令 V0=5则 V1=2V0―5=2×5―5=5V2=V1X―4=5×5―4=21V3=V2X+3=21×5+3=108V4=V3X―6=108×5―6=534V5=V4X+7=534×5+7=2677∴ f(5) = 2677秦九韶算法只用到乘法、加法两个简单运算,不需要乘方运算,它是多项式求值的简化算法。

下面看程序框图,其中a0、a1、a2、a3、a4、a5是f (x) 从右向左的系数。

案例3:排序:是一种基本并且常用的算法,排序的算法很多,可以参阅课本,这里不再叙述。

案例4:进位制例:画程序框图,表示把k进制数a(共有n位),转化为十进制数b的过程框图如下:其中:t = GET a│i│ t表示a右数第i位利用上面的算法,把2进制数110011化为十进制的数即:1×20+1×21+0×22+0×23+1×24+1×25= 51以上是四个经典算法,大家可以从中体会算法的基本思想和算法的基本结构,并尝试用算法的基本语句描述它。

1.3 算法案例1---辗转相除法与更相减损术 8

1.3   算法案例1---辗转相除法与更相减损术 8

1.3 算法案例1.3 算法案例——案例1 辗转相除法与更相减损术8**学习目标**1.理解辗转相除法与更相减损术求最大公约数的方法。

2.把辗转相除法与更相减损术的方法转换成程序框图与程序语言.**要点精讲**1.辗转相除法例如,求两个正数8251和6105的最大公约数。

分析与解:8251与6105两数都比较大,而且没有明显的公约数,可以考虑用两数中较大的数除以较小的数,求得商和余数:8251=6105×1+2146显然8251与6105的公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数, 所以8251与6105的最大公约数也是6105与2146的最大公约数。

6105=2146×2+1813,2146=1813×1+333,1813=333×5+148333=148×2+37,148=37×4+0则37为37与148的最大公约数,也是148与333的最大公约数,也是333与1813的最大公约数,也是1813与2146的最大公约数,也是2146与6105的最大公约数。

所以,2146与6105的最大公约数是37。

以上我们求最大公约数的方法就是辗转相除法。

也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。

2.更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术。

在《九章算术》中记载了更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。

翻译为:(1)任意给出两个正数;判断它们是否都是偶数。

若是,用2约简;若不是,执行第二步。

(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。

继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。

**范例分析**例1.试分别用辗转相除法和更相减损术求840与1764、440与556的最大公约数。

辗转相除法课件1

辗转相除法课件1

开始 输入m,n
求m除以n的余数r
m=n n=r r=0? 否
是 输出m
结束
思考6 如果用当型循环结构构造算法,则用辗 转相除法求两个正整数m、n的最大公约数的程序框 图和程序分别如何表示?
当型循环结构
开始 输入m,n
n=r
m=n
求m除以n的余数r r≠0 ?是
否 输出n
INPUT m,n
WHILE r<>0 r=m MOD n m=n n=r
与6105这两个数的公约数和6105与2146的公约数有 什么关系?
我们发现6105=2146×2+1813,同理,6105与 2146的公约数和2146与1813的公约数相等.
思考4:重复上述操作,你能得到8251与6105
这两个数的最大公约数吗?
8251=6105×1+2146, 1813=333×5+148,
1.3 算法案例
1.3.1 辗转相除法和更相减损术 1.3.2 秦九韶算法 1.3.3 K进制化十进制 1.3.4 十进制化K进制
到现在为止我们都学习了一些简单的算法, 都哪些算法?
• 1.判断整数n(n>2)是否为质数。 • 2.求解一元二次方程的算法 • 3.计算1+2+3+….+100的值的算法。
1.3.1 辗转相除法
一、辗转相除法
思考1 18与30的最大公约数是多少?你是怎样
得到的?
思考2 对于8251与6105这两个数,它们的最
大公约数是多少?你是怎样得到的?
由于它们公有的质因数较大,利用上述方法求 最大公约数就比较困难.有没有其它的方法可以较简 单的找出它们的最大公约数呢?

1.3.1 算法案例---辗转相除法与更相减损术

1.3.1   算法案例---辗转相除法与更相减损术

第一课时 1.3.1 算法案例---辗转相除法与更相减损术教学要求:理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析; 基本能根据算法语句与程序框图的知识设计出辗转相除法与更相减损术完整的程序框图并写出它们的算法程序.教学重点:理解辗转相除法与更相减损术求最大公约数的方法.教学难点:把辗转相除法与更相减损术的方法转换成程序框图与程序语言.教学过程:一、复习准备:1. 回顾算法的三种表述:自然语言、程序框图(三种逻辑结构)、程序语言(五种基本语句).2. 提问:①小学学过的求两个数最大公约数的方法?(先用两个公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来.)口算出36和64的最大公约数. ②除了用这种方法外还有没有其它方法?6436128=⨯+ ,36∴和28的最大公约数就是64和36的最大公约数,反复进行这个步骤,直至842=⨯,得出4即是36和64的最大公约数.二、讲授新课:1. 教学辗转相除法:例1:求两个正数1424和801的最大公约数.分析:可以利用除法将大数化小,然后逐步找出两数的最大公约数. (适用于两数较大时) ①以上我们求最大公约数的方法就是辗转相除法,也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的. 利用辗转相除法求最大公约数的步骤如下:(1)用较大的数m 除以较小的数n 得到一个商0S 和一个余数0R ;(2)若0R =0,则n 为m ,n的最大公约数;若0R ≠0,则用除数n 除以余数0R 得到一个商1S 和一个余数1R ;(3)若1R =0,则1R 为m ,n 的最大公约数;若1R ≠0,则用除数0R 除以余数1R 得到一个商2S 和一个余数2R ;……依次计算直至n R =0,此时所得到的1n R -即为所求的最大公约数.②由上述步骤可以看出,辗转相除法中的除法是一个反复执行的步骤,且执行次数由余数是否等于0来决定,所以我们可以把它看成一个循环体,它的程序框图如右图:(师生共析,写出辗转相除法完整的程序框图和程序语言)练习:求两个正数8251和2146的最大公约数. (乘法格式、除法格式)2. 教学更相减损术:我国早期也有求最大公约数问题的算法,就是更相减损术. 在《九章算术》中有更相减损术求最大公约数的步骤:可半者半之,不可半者,副置分母•子之数,以少减多,更相减损,求其等也,以等数约之.翻译为:(1)任意给出两个正数;判断它们是否都是偶数. 若是,用2约简;若不是,执行第二步.(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数. 继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数. 例2:用更相减损术求91和49的最大公约数.分析:更相减损术是利用减法将大数化小,直到所得数相等时,这个数(等数)就是所求的最大公约数. (反思:辗转相除法与更相减损术是否存在相通的地方)练习:用更相减损术求72和168的最大公约数.3. 小结:辗转相除法与更相减损术及比较①都是求最大公约数的方法,辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少;②结果上,辗转相除法体现结果是以相除余数为0得到,而更相减损术则以减数与差相等而得到.三、巩固练习:1、练习:教材P35第1题 2、作业:教材P38第1题第二课时 1.3.2 算法案例---秦九韶算法教学要求:了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数、提高计算效率的实质;理解数学算法与计算机算法的区别,理解计算机对数学的辅助作用. 教学重点:秦九韶算法的特点及其程序设计.教学难点:秦九韶算法的先进性理解及其程序设计.教学过程:一、复习准备:1. 分别用辗转相除法和更相减损术求出两个正数623和1513的最大公约数.2. 设计一个求多项式5432()254367f x x x x x x =--+-+当5x =时的值的算法. (学生自己提出一般的解决方案:将5x =代入多项式进行计算即可)提问:上述算法在计算时共用了多少次乘法运算?多少次加法运算?此方案有何优缺点?(上述算法一共做了5+4+3+2+1=15次乘法运算,5次加法运算. 优点是简单、易懂;缺点是不通用,不能解决任意多项式的求值问题,而且计算效率不高.)二、讲授新课:1. 教学秦九韶算法:① 提问:在计算x 的幂值时,可以利用前面的计算结果,以减少计算量,即先计算2x ,然后依次计算2x x ⋅,2()x x x ⋅⋅,2(())x x x x ⋅⋅⋅的值,这样计算上述多项式的值,一共需要多少次乘法,多少次加法?(上述算法一共做了4次乘法运算,5次加法运算)② 结论:第二种做法与第一种做法相比,乘法的运算次数减少了,因而能提高运算效率,而且对于计算机来说,做一次乘法所需的运算时间比做一次加法要长得多,因此第二种做法能更快地得到结果.③ 更有效的一种算法是:将多项式变形为:5432()254367((((25)4)3)6)7f x x x x x x x x x x x =--+-+=--+-+,依次计算2555⨯-=,55421⨯-=,2153108⨯+=,10856534⨯-=,534572677⨯+= 故(5)2677f =. ――这种算法就是“秦九韶算法”. (注意变形,强调格式)④ 练习:用秦九韶算法求多项式432()2351f x x x x x =+-++当4x =时的值. (学生板书→师生共评→教师提问:上述算法共需多少次乘法运算?多少次加法运算?)⑤ 如何用秦九韶算法完成一般多项式1110()n n n n f x a x a x a x a --=++++ 的求值问题?改写:11101210()(()))n n n n n n n f x a x a x a x a a x a x a x a x a ----=++++=+++++ .首先计算最内层括号内一次多项式的值,即11n n v a x a -=+,然后由内向外逐层计算一次多项式的值,即212n v v x a -=+,323n v v x a -=+, ,10n n v v x a -=+.⑥ 结论:秦九韶算法将求n 次多项式的值转化为求n 个一次多项式的值,整个过程只需n 次乘法运算和n 次加法运算;观察上述n 个一次式,可发出k v 的计算要用到1k v -的值,若令0n v a =,可得到下列递推公式:01,(1,2,,)n kk n k v a v v x a k n --=⎧⎨=+=⎩ . 这是一个反复执行的步骤,因此可用循环结构来实现.⑦ 练习:用秦九韶算法求多项式5432()52 3.5 2.6 1.70.8f x x x x x x =++-+-当5x =时的值并画出程序框图.2. 小结:秦九韶算法的特点及其程序设计三、巩固练习:1、练习:教材P35第2题 2、作业:教材P36第2题第三课时 1.3.3 算法案例---进位制教学要求:了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换;学习各种进位制转换成十进制的计算方法,研究十进制转换为各种进位制的除k 去余法,并理解其中的数学规律.教学重点:各种进位制之间的互化.教学难点:除k 取余法的理解以及各进位制之间转换的程序框图及其程序的设计. 教学过程:一、复习准备:1. 试用秦九韶算法求多项式52()42f x x x =-+当3x =时的值,分析此过程共需多少次乘法运算?多少次加法运算?2. 提问:生活中我们常见的数字都是十进制的,但是并不是生活中的每一种数字都是十进制的.比如时间和角度的单位用六十进位制,电子计算机用的是二进制,旧式的秤是十六进制的,计算一打数值时是12进制的......那么什么是进位制?不同的进位制之间又有什么联系呢?二、讲授新课:1. 教学进位制的概念:① 进位制是人们为了计数和运算方便而约定的记数系统,“满几进一”就是几进制,几进制的基数就是几. 如:“满十进一”就是十进制,“满二进一”就是二进制 . 同一个数可以用不同的进位制来表示,比如:十进数57,可以用二进制表示为111001,也可以用八进制表示为71、用十六进制表示为39,它们所代表的数值都是一样的. 表示各种进位制数一般在数字右下脚加注来表示,如上例中:(2)(8)(16)1110017139==② 一般地,任意一个k 进制数都可以表示成不同位上数字与基数的幂的乘积之和的形式,即110110()110110...(0,0,...,,)n n n n k n n n n a a a a a k a a a k a k a ka k a k ----<<≤<=⨯+⨯+⨯+⨯ . 如:把(2)110011化为十进制数,(2)110011=1⨯25+1⨯24+0⨯23+0⨯22+1⨯21+1⨯20=32+16+2+1=51. 把八进制数(8)7348化为十进制数,3210(8)7348783848883816=⨯+⨯+⨯+⨯=.2. 教学进位制之间的互化:①例1:把二进制数(2)1001101化为十进制数.(学生板书→教师点评→师生共同总结将非十进制转为十进制数的方法)分析此过程的算法过程,编写过程的程序语言. 见P34②练习:将(5)2341、(3)121转化成十进制数.③例2、把89化为二进制数.分析:根据进位制的定义,二进制就是“满二进一”,可以用2连续去除89或所得商,然后取余数. (教师板书)上述方法也可以推广为把十进制化为k 进制数的算法,这种算法成为除k 取余法. ④练习:用除k 取余法将89化为四进制数、六进制数.⑤例3、把二进制数(2)11011.101化为十进制数.解:43210123(2)11011.101121202121212021227.625---=⨯+⨯+⨯+⨯+⨯+⨯+⨯+⨯=.(小数也可利用上述方法化进行不同进位制之间的互化. )变式:化为八进制→方法:进制互化3. 小结:进位制的定义;进位制之间的互化.三、巩固练习:1、练习:教材P35第3题 2、作业:教材P38第3题第四课时 1.3.4 生活中的算法实例教学要求:通过生活实例进一步了解算法思想.教学重点:生活实例的算法分析.教学难点:算法思想的理解.教学过程:一、复习准备:1. 前面学习了哪几种算法案例?每种算法的作用及操作方法是怎样的?2. 算法思想在我们的生活中无处不在,如何利用我们所学习的知识解决生活中的实际问题?二、讲授新课:1. 霍奇森算法:提问:同学们经常会面对一个共同的问题,就是有时有太多的事情要做. 例如,你可能要面临好几门课的作业的最后期限,你如何合理安排以确保每门课的作业都能如期完成?如果根本不可能全部按期完成,你该怎么办?(霍奇森算法可以使得迟交作业的数目减到最小. 这一算法已经广泛应用于工业生产安排的实践中.)例如:当你拿到下面这组数据后,你会如何安排你的时间,以确保每门课的作业都能如期完成?可用自然语言描述为:①把这些作业按到期日的顺序从左到右排列,从最早到期的到最晚到期的;②假设从左到右一项一项做这些作业的话,计算出从开始到完成某一项作业时所花的时间. 依次做此计算直到完成了所列表中的全部作业而没有一项作业会超期,停止;或你算出某项作业将会超期,继续第三步;③考虑第一项将会超期的作业以及它左边的所有作业,从中取出花费时间最长的那项作业,并把它从表中去掉;④回到第二步,并重复第二到四步,直到做完.2. 孙子问题:韩信是秦末汉初的著名军事家. 据说有一次汉高祖刘邦在卫士的簇拥下来到练兵场,刘邦问韩信有什么办法,不要逐个报数,就能知道场上士兵的人数.韩信先令士兵排成了3列纵队进行操练,结果有2人多余;接着他立刻下令将队形改为5列纵 队,这一改又多出3人;随后他又下令改为7列纵队,这一次又剩下2人无法成整行. 由此得出共有士兵2333人. 如何用现在的算法思想分析这一过程?《孙子算经》中给出了它的具体解法,其步骤是:选定57⨯的倍数,被3除余1,即70;选定37⨯的一个倍数,被5除余1,即21;选定35⨯的一个倍数,被7除余1,即15. 然后按下式计算702213152105m p =⨯+⨯+⨯-,式中105为3,5,7的最小公倍数,p 为适当的整数,使得0105m <≤,这里取2p =.求解“孙子问题”的一种普通算法:第一步:2m =.第二步:若m 除以3余2,则执行第三步;否则1m m =+,执行第二步.第三步:若m 除以5余3,则执行第四步;否则1m m =+,执行第二步.第四步:若m 除以7余2,则执行第五步;否则1m m =+,执行第二步.第五步:输出m .3. 小结:算法的基本思想.三、巩固练习: 作业:教材P38第3题。

1.3.1算法案例(辗转相除法)

1.3.1算法案例(辗转相除法)

程序框图: 程序框图: 开 始 程序: 程序
INPUT “m,n为正整数且m>n”;m,n DO r = m MOD n m= n n = r LOOP UNTIL r=0 PRINT m END
输入正整数m,n( 输入正整数m,n(m>n) m,n r=m MOD n
m=n n=r
r=0? 输出m 输出m 结 束 否
f (x) = an xn + an−1xn−1 +L+ a1x + a0
对该多项式按下面的方式进行改写: 对该多项式按下面的方式进行改写:
f (x) = an xn + an−1xn−1 +L+ a1x + a0
= (an xn−1 + an−1xn−2 +L+ a1)x + a0
=L L
= ((an xn−2 + an−1xn−3 +L+ a2 )x + a1)x + a0
思考1:为什么更相减损术能求两个正整数的最 思考1:为什么更相减损术能求两个正整数的最 1: 大公约数? 大公约数? 练习:用更相减损术求1457 188的最大公约数 1457与 的最大公约数. 练习:用更相减损术求1457与188的最大公约数. 用更相减损术求84 72的最大公约数 84与 的最大公约数. 例2: 用更相减损术求84与72的最大公约数.
2 18 3 9 3 30 15 5
所以, 与 的最大公约数是 的最大公约数是2× 所以,18与30的最大公约数是 ×3=6 思考2: 的最大公约数, 思考 :求8251与6105的最大公约数,用上述 与 的最大公约数 方法适合吗? 方法适合吗?

算法案例第1课时辗转相除法与更相减损术学案课件 新人教A版必修3

算法案例第1课时辗转相除法与更相减损术学案课件 新人教A版必修3

1.辗转相除法 (1)辗转相除的原理: 设m, n是两个整数 (不妨设m>n),用m除以n,若商为 q1 ,余数为 r1(0≤r1<n) ,则 m = n· q1 + r1 ,显然若 x 是 m 和 n 的 公约数,即x能整除m和n,则x也必然能整除r1,这样x也是 n 和 r1 的公约数,故求 m 和 n 的公约数就是求 n 和 r1 的公约数; 同理,用n除以r1,得n=r1· q2+r2(0≤r2<r1),故求m和n的公 约 数 就 是 求 r2 和 r1 的 公 约 数 , … , 依 次 下 去 , 由 于 m>n>r1>r2>… ,所以到某一步必然有 ri = ri + 1· qi + 2 ,即 ri 恰 能被ri+1整除,这时ri+1是ri和ri+1的最大公约数,它也必然 是ri-1和ri、ri-2和ri-1、…、r1与r2、n和r2、m和n的最大公 约数.
此编写的算法,也称作“欧几里得算法”.
3.对于正整数m与n(m>n),总能找到整数q和r(0≤r<n)
使得m=nq+r成立,这个除法称为带余除法.通常记r= mMODn.
重点:算法案例的原理、算法设计及算法思想的体 会. 难点:理解算法案例的内容及具体算法设计的关键步
骤.
一、弄清算法原理,掌握算法程序,经历算法设计过 程,体会算法设计的关键环节,领悟算法思想.
(1)更相减损术求两数最大公约数的过程与算法设计. 对于给定的两个数,用较大的数减去较小的数,接着 把得到的差与较小的数比较,用这时两个数中较大的数减 去较小的数,继续这样的操作 ( 大数减小数 ) ,直到所得的
数相等为止,那么这个数 ( 相等数 ) 就是所求的最大公约
数.
显然,上述过程中大数减去小数是一个重复执行的过

算法案例1-辗转相除法

算法案例1-辗转相除法
第二步:以较大的数减较小的数,接着把所 得的差与较小的数比较,并以大数减小数。 继续这个操作,直到所得的减数和差相等为 止,则这个等数就是所求的最大公约数。
练习:
1、用更相减损术求两个正数84与72的最大公约数 思路分析:先约简,再求21与18的最大公 约数,然后乘以两次约简的质因数4。
2、求324、243、135这三个数的最大公约数。
2.“求两个正整数的最大公约数” 是数学中的一个基础性问题,它有各种 解决办法,我们以此为案例,对该问题 的算法作一些探究.
复习引入
1、MOD \ 表示什么意思? a MOD b a\b (a b 是正整数)
a=b*q+r (0<=r<b)
2、求 18与30的最大公约数。
先用两个数公有的质因数连续去除,一直除到所 得的商是互质数为止,然后把所有的除数连乘起来即 为最大公约数.
思考:
若求8251和6105的最大公约数呢?
注意到 8251=6105×1+2146
那么8251和6105这两个数的公约数和 6105与2146的公约数有什么关系?
思考:又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.
完整的过程 8251=6105×1+2146
6105=2146×2+1813 辗转相除法

算法案例-辗转相除法与更相减损术、秦九韶算法-优质获奖精品课件 (100)

算法案例-辗转相除法与更相减损术、秦九韶算法-优质获奖精品课件  (100)

第一章 算法初步
题型三 进位制
例3 (本题满分9分)完成下列进位制之 间的转化: (1)将十进制数30转化为二进制数; (2)将二进制数101111011(2)转化为十进制数.
栏目 导引
【解】 (1) 4分
第一章 算法初步
∴30(10)=11110(2). 5分 (2)101111011(2)=1×28+0×27+1×26+ 1×25+1×24+1×23+0×22+1×21+ 1×20=379. 9分
栏目 导引
第一章 算法初步
法二: 由更相减损术, 得 108-45=63, 63-45=18, 45-18=27, 27-18=9, 18-9=9, 故108与45的最大公约数是9.
栏目 导引
第一章 算法初步
题型二 秦九韶算法及其应用
例2 用秦九韶算法求多项式 f(x)=3x5+8x4-3x3+5x2+12x-6 当x=2时的值. 【解】 根据秦九韶算法, 把多项式改写 成如下形式: f(x)=((((3x+8)x-3)x+5)x+12)x-6, 按 照从内到外的顺序,
栏目 导引
第一章 算法初步
依次计算当x=2时一次多项式的值. v0=3, v1=v0×2+8=3×2+8=14, v2=v1×2-3=14×2-3=25, v3=v2×2+5=25×2+5=55, v4=v3×2+12=55×2+12=122, v5=v4×2-6=122×2-6=238. 所以当x=2时, 多项式的值为238.
栏目 导引
第一章 算法初步
(3)不同进位制数之间的转化 ①k进制数转化为十进制数 把k进制数转化为十进制数, 写成不同位上 数字与基数幂的乘积之和即可(简称幂积求 和), 即anan-1…a1a0(k)=an×kn+an-1×kn-1 +…+a1×k+a0.例如, 将二进制数11001(2) 化为十进制数: 11001(2)=1×24+1×23+ 0×22+0×21+1×20=16+8+1=25.

1.3.1算法案例-辗转相除法

1.3.1算法案例-辗转相除法

小结与作业
1.辗转相除法,就是对于给定的两个正整数, 用较大的数除以较小的数,若余数不为零,则将 余数和较小的数构成新的一对数,继续上面的除 法,直到大数被小数除尽为止,这时的较小的数 即为原来两个数的最大公约数.
2. 更相减损术,就是对于给定的两个正整数, 用较大的数减去较小的数,然后将差和较小的数 构成新的一对数,继续上面的减法,直到差和较 小的数相等,此时相等的两数即为原来两个数的 最大公约数.
1.3算法案例
复习引入 表示算法的三种方式:
算法步骤(自然语言)
程序框图(图形语言)——三种结构
计算机程序(程序语言)——五种语句
新课讲解
[问题1]:在小学,我们已经学过求最大公约数 的知识,你能求出18与90的最大公约数吗? 2 18 90 3 9 45 3 3 15 1 5 先用两个数公有的质因数 连续去除,一直除到所得 的商是互质数为止,然后 把所有的除数连乘起来.
1813=333×5+148 333=148×2+37
148=37×4+0
[问题]你能把这个算法转化
为程序框图吗?
新课讲解
[问题]你能把这个算法转化
为程序框图吗?
第一步,给定两个正数m,n
第二步,计算m除以n所得 到余数r 第三步,m=n,n=r
开始
输入m,n 求m除以n的余数r m=n n=r r=0? 是
第四步,若r=0,则m,n的最 大公约数等于m; 否则,返回第二步

输出m 结束
研探新知
问题:你能为辗转相除法编写一个计算机 程序吗? INPUT m,n DO r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END

高中数学必修三1.3算法案例-辗转相除法

高中数学必修三1.3算法案例-辗转相除法
解:1)先求1734与816的最大公约数
1734=816×2+102
816=102×8
2)再求102与1343的最大公约数
1343=102×13+17
102=17×6
所以17为102与1343的最大公约数
所以17为1734、816、1343这三个数的最大公约数




第1.3节算法案例-----辗转相除法
............................... ................................... ...............
课后作业
P45练习:1.
P48习题1.3A组:1.




1.辗转相除法的思想2.辗转相除法算法框图3.例题讲解
................................ ................................... ...............
............................... ................................... ...............
2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序。
(b)过程与方法
在辗转相除法求最大公约数的学习过程中体会我们常见的约分求公因式的方法,,并从程序的学习中体会数学的严谨,领会数学算法计算机处理的结合方式,初步掌握把数学算法转化成计算机语言的一般步骤。
(c)情态与价值
1.通过阅读中国古代数学中的算法案例,体会中国古代数学对世界数学发展的贡献。
PRINT m
END
课堂练习:1.求两数4081与20723的最大公约数.

《算法案例——辗转相除法与更相减损术》课件1(19张PPT)(北师大版必修3)

《算法案例——辗转相除法与更相减损术》课件1(19张PPT)(北师大版必修3)
算法案例
第一课时
2019/11/12
复习引入 1. 回顾算法的三种表示方法:
(1)、自然语言 (2)、程序框图 (三种逻辑结构) (3)、程序语言 (五种基本语句)
2019/11/12
2. 思考: 小学学过的求两个数的最大公约数的方法? 先用两个公有的质因数连续去除,一直
除到所得的商是互质数为止,然后把所有的 除数连乘起来.
பைடு நூலகம்
输出b 结束
(3)、程序
INPUT “a,b=“;a,b WHILE a<>b
r=a-b IF b>r THEN a=b b=r ELSE a=r END IF WEND PRINT b END
2019/11/12
小结
比较辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除 法以除法为主,更相减损术以减法为主,计算次数 上辗转相除法计算次数相对较少,特别当两个数字 大小区别较大时计算次数的区别较明显。
2019/11/12
2、定义:
所谓更相减损术,就是对于给定的两个 数,用较大的数减去较小的数,然后将差和 较小的数构成新的一对数,再用较大的数减 去较小的数,反复执行此步骤直到差数和较 小的数相等,此时相等的两数便为原来两个 数的最大公约数。
2019/11/12
3、方法:
例: 用更相减损术求98与63的最大公约数.
更相减损,求其等也,以等数约之。 (2)、现代数学中的更相减损术:
第一步:任意给定两个正整数;判断他们是否都是偶数。 若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小 的数比较,并以大数减小数。继续这个操作,直到所得的 减数和差相等为止,则这个等数就是所求的最大公约数。

8§131算法案例——辗转相除法与更相减损术.docx

8§131算法案例——辗转相除法与更相减损术.docx

教师课时教案问题与情境及教师活动学生活动思考3:上述求两个正整数的最大公约数的方法称为辗转相除法或欧几里得算法.一般地,用辗转相除法求两个正整数m, n的最大公约数,可以用什么算法?其算法步骤如何设计?辗转相除法,就是对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽为止,这时的较小的数即为原来两个数的最大公约数.思考4:你能否把辗转相除法编程?辗转相除法求两个数的最大公约数,其算法步骤可以描述如下:第一步,给定两个正整数m, n.第二步,求余数I•:计算m除以n,将所得余数存放到变量I■中.第三步,更新被除数和余数:m=n, n=r.第四步,判断余数「是否为0.若余数为0,则输出结果;否则转向第二步继续循坏执行.程序框图如下图:程序:过程及方法思考4:你能用当型循环结构构造算法,求两个正整数的最大公约数吗?试画出程序框图和程序.当型循坏结构的程序框图如右图程序:探究二:更相减损术思考1:设两个正整数m>n,若m-n=k,则m 与 n 的最大公约数和n 与k 的最大公约数相 等.反复利用这个原理,可求得98与63 的最大公约数为多少? 解:由于63不是偶数,把98和63以大数减小数, 并辗转相减,如下图所示. 所以,98和63的最大公约数等于7. 思考2:上述求两个正整数的最大公约数的方法称 为更相减损术•一般地,用更相减损术求两个正整数m, n 的最 大公约数,可以用什么逻辑结构来构造算法? 更相减损术,就是对于给定的两个正整数,用较大的数减去较小 的数,然后将差和较小的 数构成新的一对数, 继续上面的减法, 直到差和较小的数相等, 此时相等的两数即为原来 两个数的最大公约数. 思考3:你能否把更相减损术编程? 探究三:辗转相除法与更相减损术的区别(1) 都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少, 特别当两个数字大小区别较大时计算次数的区别较明显。

1、3、1算法案例(辗转相除法)

1、3、1算法案例(辗转相除法)

你从中看到了 怎样的规律? 怎么用程序框 图来描述呢?
所以, 所以,当x = 5时,多项式的值等于 时 多项式的值等于17255.2
开始
程序框图:
输入f(x)的系数: a0,a1,a2,a3,a4a5 输入x0
v0 = an vk = vk−1 x + an−k (k =1,2,L, n)
课堂小结: 课堂小结:
1、秦九韶算法的方法和步骤 、 2、秦九韶算法的程序框图 、
算法步骤: 第一步:给定两个正整数m,n; 第二步:计算m除以n所得的余数r; 第三步:m=n,n=r; 第四步:若r=0,则m,n的最大公约数等于m; 否则,返回第二步。
开始
程序框图: 程序:
输入m,n 求m除以n的余数r m=n n=r 否 r=0 ? 是 输入m
INPUT m,n DO r= m MOD n m=n n=r LOOP UNTIL r=0 PRINT m END
按由里到外的顺序,依此计算一次多项式当 时的值: 按由里到外的顺序,依此计算一次多项式当x = 5时的值: 时的值
v0 = 5 v1 = 5×5+ 2 = 27 v2 = 27×5+3.5 =138.5 v3 =138.5×5− 2.6 = 689.9 v4 = 689.9×5+1.7 = 3451.2 v5 = 3451.2×5−0.8 =17255.2
结束
欧几里得辗转相除法找出a,b的最大公约数的步骤是: (1)计算a÷b的余数r,若r=0,则b为a,b的最大公约数; (2)若r≠0,则把前面的除数b作为新的被除数,把r作 为新的除数,继续运算,直到余数为0,此时的除数即为 a,b的最大公约数.
算 法 案 例
第二课时

辗转相除法ppt课件

辗转相除法ppt课件

思考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.
END
结束
思考8:如果用当型循环结构构造算法, 则用辗转相除法求两个正整数m,n的最 大公约数的程序框图和程序分别如何表 示?
开始
输入m,n
n=r m=n
r>0? 否
输出m
求m除以n的余数r 是
结束
INPUT m,n
WHILE r>0 r=m MOD n m=n n=r
WEND PRINT m
END
例3:用辗转相除法和更相减损术求210与714 的最大公约数.
小结
比较辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除 法以除法为主,更相减损术以减法为主,计算次数 上辗转相除法计算次数相对较少,特别当两个数字 大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果 是以相除余数为0则得到,而更相减损术则以减数与 差相等而得到
N
b>a?
Y
N
t=a,a=b,b=t
a=a-b
N a=b? Y
输出:a×2i
结束
程序:
INPUT “a,b”;a,b
i=0
WHILE a MOD 2=0 AND b MOD 2=0

辗转相除法例题及解析

辗转相除法例题及解析

辗转相除法例题及解析
辗转相除法,也叫作欧几里德算法,是一种用于求两个正整数的最大公约数的算法。

下面我们来看一个辗转相除法的例题及解析。

例题:求246和198的最大公约数。

解析:首先,我们用246除以198,得到商为1,余数为48(246 = 198 * 1 + 48)。

接下来,我们用198除以48,得到商为4,余数为6(198 = 48 * 4 + 6)。

再次,我们用48除以6,得到商为8,余数为0(48 = 6 * 8 + 0)。

因为最后的余数为0,所以我们可以得出结论,246和198的最大公约数为6。

解析过程中,我们不断用较小的数去除较大的数,再用得到的余数去除上一轮的除数,重复这个过程,直到余数为0。

此时,最后一次的除数就是最大公约数。

通过辗转相除法,我们可以高效地求出两个数的最大公约数,理解原理和掌握使用方法能够帮助我们在解决实际问题中快速得到结果。

1.3.算法案例辗转相除法 秦九韶 进位制

1.3.算法案例辗转相除法  秦九韶  进位制

同理: 3421(5)=3×53+4×52+2×51+1×50.
C7A16(16)=12×164+7×163+10×162 +1×161+6×160.
一般地,若k是一个大于1的整数,那么以k为基数 的k进制数可以表示为一串数字连写在一起的形式
anan-1…a1a0(k) (0<an<k,0≤an-1,…,a1,a0<k)
[问题4]你会把三进制数10221(3)化为十进制数吗?
解:10221(3)=1×34+0×33+2×32+2×31 +1×30 =81+18+6+1=106.
k进制数转化为十进制数的方法
先把k进制的数表示成不同位上数字 与基数k的幂的乘积之和的形式,即 anan-1…a1a0(k)
=an×kn+an-1×kn-1+…+a1×k1+a0×k0 .
开始 输入m,n
r=m MOD n
m=n n=r
LOOP UNTIL r=0
PRINT m END
r=0?
是 输出m 结束

《九章算术》——更相减损术 算理:可半者半之,不可半者,副置分母、子 之数,以少减多,更相减损,求其等也,以等 数约之。
第一步:任意给定两个正整数;判断他们是否都是 偶数。若是,则用2约简;若不是则执行第二步。
m=n×q+r
用程序框图表示出右边的过程
8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333
r=m MOD n
m=n
n=r r=0? 否
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6105=2146×2+1813
r=m MOD n m=n n=r
2146=1813×1+333 1813=333×5+148
r=0?


333=148×2+37 148=37×4+0
思考 其算法步骤如何设计?
第一步,给定两个正整数m,n(m>n). 第二步,计算m除以n所得的余数r. 第三步,m=n,n=r. 第四步,若r=0,则m,n的最大公约数 等 于m;否则,返回第二步.
思考题
1、用当型循环结构写出算法;
2、试写出更相减损术的算法程序;
3、试写出求两个正整数m、n的最小公倍数 的程序。
评价一个算法好坏的一个重要标志是 运算的次数,如果一个算法从理论上需 要超出计算机允许范围内的运算次数, 那么这样的算法就只能是一个理论算法. 在多项式求值的各种算法中,秦九韶算 法是一个优秀算法.
(欧几里得算法)
显然37是148和 37的最大公约数, 也就是8251和 6105的最大公约 数
148=37×4+0
例:用辗转相除法求225和135的最大公约数
思考:能不能把辗转相除法设计成算法呢?
关键步骤是什么逻辑结构?
m =n×q+r
用程序框图表示出右边的 过程
8251=6105×1+2146
思考:该程序框图和的程序如何表述?
开始
输入数r
m=n
n=r r=0? 否
是 输出m
r=m MOD n m=n n=r LOOP UNTIL r=0 PRINT m
END
结束
知识探究(二):更相减损术
思考1:设两个正整数m>n,若m-n=k,则m 与n的最大公约数和n与k的最大公约数相 等.反复利用这个原理,可求得98与63的 最大公约数为多少?
复习引入
1、MOD \ 表示什么意思? a MOD b a\b (a b 是正整数)
a=b*q+r (0<=r<b)
2、求 18与30的最大公约数。
先用两个数公有的质因数连续去除,一直除到所 得的商是互质数为止,然后把所有的除数连乘起来即 为最大公约数.
思考:
若求8251和6105的最大公约数呢?
第二步:以较大的数减较小的数,接着把所 得的差与较小的数比较,并以大数减小数。 继续这个操作,直到所得的减数和差相等为 止,则这个等数就是所求的最大公约数。
练习:
1、用更相减损术求两个正数84与72的最大公约数 思路分析:先约简,再求21与18的最大公 约数,然后乘以两次约简的质因数4。
2、求324、243、135这三个数的最大公约数。
思路分析:求三个数的最大公约数可以先求出 两个数的最大公约数,第三个数与前两个数的 最大公约数的最大公约数即为所求。
小结
比较辗转相除法与更相减损术的区别 (1)都是求最大公约数的方法,计算上辗 转相除法以除法为主,更相减损术以减法为 主,计算次数上辗转相除法计算次数相对较 少,特别当两个数字大小区别较大时计算次 数的区别较明显。 (2)从结果体现形式来看,辗转相除法体 现结果是以相除余数为0则得到,而更相减损 术则以减数与差相等而得到。
注意到 8251=6105×1+2146
那么8251和6105这两个数的公约数和 6105与2146的公约数有什么关系?
思考:又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.
完整的过程 8251=6105×1+2146
6105=2146×2+1813 辗转相除法
2146=1813×1+333 1813=333×5+148 333=148×2+37
1.3 算法案例
第一课时
问题提出
t
p


1 2

5730
1.研究一个实际问题的算法,主要从 算法步骤、程序框图和编写程序三方面 展开.在程序框图中算法的基本逻辑结构 有哪几种?在程序设计中基本的算法语 句有哪几种?
2.“求两个正整数的最大公约数” 是数学中的一个基础性问题,它有各种 解决办法,我们以此为案例,对该问题 的算法作一些探究.
98-63=35, 63-35=28, 35-28=7, 28-7=21, 21-7=14, 14-7=7.
二、更相减损术
(1)、《九章算术》中的更相减损术: 可半者半之,不可半者,副置分母、子之数,
以少减多,更相减损,求其等也,以等数约之。
(2)、现代数学中的更相减损术:
第一步:任意给定两个正整数;判断他们是 否都是偶数。若是,则用2约简;若不是则 执行第二步。
相关文档
最新文档