42
(算 算算 )

算 法 案 例

Embed Size (px)

DESCRIPTION

算 法 案 例. ( 第一课时 ). 5. 25. 35. ( 1 ). 7. 49. 63. ( 2 ). 5. 7. 7. 9. 1 、求两个正整数的最大公约数. ( 1 )求 25 和 35 的最大公约数 ( 2 )求 49 和 63 的最大公约数. 所以, 25 和 35 的最大公约数为 5. 所以, 49 和 63 的最大公约数为 7. 2 、求 8251 和 6105 的最大公约数. 辗转相除法(欧几里得算法). 观察用辗转相除法求 8251 和 6105 的最大公约数的过程. - PowerPoint PPT Presentation

Citation preview

Page 1: 算  法  案  例

算 法 案 例

( 第一课时 )

Page 2: 算  法  案  例

1 、求两个正整数的最大公约数

( 1 )求 25 和 35 的最大公约数( 2 )求 49 和 63 的最大公约数

2 、求 8251 和 6105 的最大公约数

25( 1 ) 5

5

35

7

49( 2 ) 7

7

63

9

所以, 25 和 35 的最大公约数为 5 所以, 49 和 63 的最大公约数为 7

Page 3: 算  法  案  例

辗转相除法(欧几里得算法)

观察用辗转相除法求 8251 和 6105 的最大公约数的过程

第一步 用两数中较大的数除以较小的数,求得商和余数8251=6105×1+2146

结论: 8251 和 6105 的公约数就是 6105 和 2146 的公约数,求 8251和 6105 的最大公约数,只要求出 6105 和 2146 的公约数就可以了。

第二步 对 6105 和 2146 重复第一步的做法6105=2146×2+1813同理 6105 和 2146 的最大公约数也是 2146 和 1813 的最大公约数。

Page 4: 算  法  案  例

完整的过程

8251=6105×1+2146

6105=2146×2+1813

2146=1813×1+333

1813=333×5+148

333=148×2+37

148=37×4+0

例 2 用辗转相除法求 225 和 135 的最大公约数

225=135×1+90

135=90×1+45

90=45×2

显然 37 是 148 和 37 的最大公约数,也就是 8251 和 6105 的最大公约数

显然 45 是 90 和 45 的最大公约数,也就是 225 和 135 的最大公约数

思考 1 :从上面的两个例子可以看出计算的规律是什么?

S1 :用大数除以小数

S2 :除数变成被除数,余数变成除数

S3 :重复 S1 ,直到余数为 0

Page 5: 算  法  案  例

辗转相除法是一个反复执行直到余数等于 0 停止的步骤,这实际上是一个循环结构。

8251=6105×1+2146

6105=2146×2+1813

2146=1813×1+333

1813=333×5+148

333=148×2+37

148=37×4+0

m = n × q + r

用程序框图表示出右边的过程

r=m MOD n

m = n

n = r

r=0?

是否

Page 6: 算  法  案  例

《九章算术》——更相减损术

算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。

第一步:任意给顶两个正整数;判断他们是否都是偶数。若是,则用 2约简;若不是则执行第二步。

第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。

Page 7: 算  法  案  例

例 3 用更相减损术求 98 与 63 的最大公约数

解:由于 63 不是偶数,把 98 和 63 以大数减小数,并辗转相减 98 - 63 = 3563 - 35 = 2835 - 28 = 728 - 7 = 2121 - 7 = 1414 - 7 = 7

所以, 98 和 63 的最大公约数等于 7

练习:

课本 P36 练习第 1 题

Page 8: 算  法  案  例

算法案例

(第二课时)

Page 9: 算  法  案  例

计算多项式f(x) = x5+x4+x3+x2+x+1当 x = 5 的值算法 1 :因为f(x) = x5+x4+x3+x2+x+1

所以f( 5 ) =5 5+ 5 4+ 5 3+ 5 2+ 5 +1

=3125 + 625 + 125 + 25 + 5 +1

= 3906算法 2 :

f( 5 ) =5 5+ 5 4+ 5 3+ 5 2+ 5 +1=5× ( 5 4+ 5 3+ 5 2+ 5 +1) +1=5× ( 5× ( 5 3+ 5 2+ 5 +1 )+1 ) +1=5× ( 5× ( 5× ( 5 2+ 5 +1) +1 )+1 ) +1=5× ( 5× ( 5× ( 5 × ( 5 +1 ) +1 ) +1 )+1 ) +1

Page 10: 算  法  案  例

《数书九章》——秦九韶算法

011

1)( axaxaxaxf nn

nn

设 )(xf 是一个 n 次的多项式

对该多项式按下面的方式进行改写:

011

1)( axaxaxaxf nn

nn

012

11 )( axaxaxa n

nn

n

0123

12 ))(( axaxaxaxa n

nn

n

0121 )))(( axaxaxaxa nnn

这是怎样的一种改写方式?最后的结果是

什么?

Page 11: 算  法  案  例

0121 )))(()( axaxaxaxaxf nnn

要求多项式的值,应该先算最内层的一次多项式的值,即

11 nn axav

然后,由内到外逐层计算一次多项式的值,即

212 naxvv

323 naxvv

01 axvv nn

最后的一项是什么?

这种将求一个 n 次多项式 f ( x )的值转化成求 n 个一次多项式的值的方法,称为秦九韶算法。

Page 12: 算  法  案  例

例 2 已知一个五次多项式为8.07.16.25.325)( 2345 xxxxxxf

用秦九韶算法求这个多项式当 x = 5 的值。解:将多项式变形:

8.0)7.1)6.2)5.3)25(((()( xxxxxxf

按由里到外的顺序,依此计算一次多项式当 x = 5 时的值:

272551 v

50 v

5.1385.35272 v

9.6896.255.1383 v

2.34517.159.6894 v

2.172558.052.34515 v

所以,当 x = 5 时,多项式的值等于 17255.2

你从中看到了怎样的规律?怎么用程序框图来描

述呢?

Page 13: 算  法  案  例

开始

输入 f (x) 的系数:a0 、 a1 、 a2 、 a3 、 a4 、 a5

输入 x0

n=0

v=a5

v= v·x0+a5-n

n=n+1

n < 5?

输出 v

结束

否是

秦九韶算法检验

注意:要想使用检验功能,请使用前,先要减低宏的安全限制

Page 14: 算  法  案  例

排序的算法将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

方法 1 :S1 :比较第 2 个数与第 1 个数的大小,并排序得 3 , 8

S2 :将第 3 个数与 S1 中的数比较,插入适当的位置,得到2 , 3 , 8

S3 :将第 4 个数与 S2 中的数比较,并插入适当的位置,如此继续下去,直到把最后一个数插入到上一步已排好的数列的合适位置为止,得到:

2 , 3 , 5 , 8

2 , 3 , 5 , 8 , 9

2 , 3 , 5 , 6 , 8 , 9

S4 :S5 :

Page 15: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9, 6

方法 1 :

过程演示

8 3 2 5 9 6

开始

排第 1次排第 2次排第 3次排第 4次

8 3 2 5 9 6

3 8 2 5 9 6

2 3 8 5 9 6

2 3 5 8 9 6

2 3 5 8 9 6

排第 5次

2 3 5 6 8 9

Page 16: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

方法 2 : S1 :用第 1 个数与第 2 个数比较,若前者小则两数不变,否则,交换这两个数的位置。

S2 :按这样的原则,比较第 2 个数和第 3 个数,前者小则两数不变,否则,交换这两个数的位置……直到比完最后两个数。(称为“一趟”)

S3 :如果前一趟的比较中交换的次数为 0 ,说明排序已完成,否则回到 S2 。

根据题意,一趟后的结果是什么?

为什么说前一趟的比较中交换为 0次时,排序完成?

3 , 2 , 5 , 8 , 6 , 9

Page 17: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 1 趟 8

3

2

5

9

6

3

8

2

5

9

6

3

2

8

5

9

6

3

2

5

8

9

6

3

2

5

8

9

6

3

2

5

8

6

9

该趟中交换的次数为 ________ 次4

Page 18: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 2 趟 3

2

5

8

6

9

2

3

5

8

6

9

2

3

5

8

6

9

2

3

5

8

6

9

2

3

5

6

8

9

2

3

5

6

8

9

该趟中交换的次数为 ________ 次2

Page 19: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 3 趟 2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

该趟中交换的次数为 ________ 次,0

所以排序的结果为:

2 , 3 , 5 , 6 , 8 , 9

Page 20: 算  法  案  例

练习:

1 、根据前面的介绍阅读课本 P32 的例 3 ,并完成图 1.3-6 的填空

Page 21: 算  法  案  例

课后作业

课本 P38 的习题 1.3 第 2 、 3 题

Page 22: 算  法  案  例

算法案例(第三课时)

Page 23: 算  法  案  例

一、进位制一、进位制

1 、什么是进位制?

2 、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明.

进位制是人们为了计数和运算方便而约定的记数系统。

Page 24: 算  法  案  例

1 、我们了解十进制吗?所谓的十进制,它是如何构成的?

十进制由两个部分构成

例如: 3721

0123 1011021071037213

其它进位制的数又是如何的呢?

第一、它有 0 、 1 、 2 、 3 、 4 、 5 、 6 、7 、 8 、 9 十个数字;

第二、它有“权位”,即从右往左为个位、十位、百位、千位等等。

( 用 10 个数字来记数,称基数为 10)

表示有: 1 个 1 , 2 个十, 7 个百即 7 个 10 的平方, 3 个千即 3 个 10 的立方

Page 25: 算  法  案  例

2 、 二进制

二进制是用 0 、 1 两个数字来描述的。如 11001等

(1)二进制的表示方法

区分的写法: 11001 ( 2 )或者( 11001 ) 2

01234(2) 212020212111001

8 进制呢?如 7342(8)

k 进制呢? anan-1an-2…a2a1(k) ?

Page 26: 算  法  案  例

二、二进制与十进制的转换

1 、二进制数转化为十进制数

例 1 将二进制数 110011(2) 化成十进制数

解: 根据进位制的定义可知012345

)2( 212120202121110011

121161321 51

所以, 110011 ( 2 ) =51 。

Page 27: 算  法  案  例

练习

将下面的二进制数化为十进制数?

( 1 ) 11 ( 2 ) 111 ( 3 ) 1111 ( 4 ) 11111

Page 28: 算  法  案  例

2 、十进制转换为二进制( 除 2 取余法:用 2 连续去除 89 或所得的商,然后取余数 )

例 2 把 89 化为二进制数解:根据“逢二进一”的原则,有

89 = 2×44 +1 = 2× (2×22 + 0)+1

= 2×( 2×( 2×11 + 0)+0)+1= 2× (2× (2× (2× 5 + 1)+0)+0)+1

5 = 2× 2 + 1

= 2× ( 2× ( 2× ( 2× ( 22 + 1 )+ 1 )+ 0 )+ 0 )+ 1

89 = 1×26 + 0×25 + 1×24 + 1×23 + 0×22 + 0×21 + 1×20

所以: 89=1011001 ( 2 )

= 2× ( 2× ( 2× ( 23 + 2 + 1 )+ 0 )+ 0 )+ 1

= 2× ( 2× ( 24 + 22 + 2 + 0 )+ 0 )+ 1

= 2× ( 25 + 23+22 + 0 + 0 )+ 1

= 26 + 24+23 + 0 + 0 + 21

89 = 2×44 +144 = 2×22 + 0

22 = 2×11 +011 = 2× 5 +1 = 2× (2× (2× (2× (2× 2 + 1)+1)+0)+0)+1

所以 89 = 2× ( 2× ( 2× ( 2× ( 2 × 2 + 1 )+ 1 )+ 0 )+ 0 )+ 1

Page 29: 算  法  案  例

2 、十进制转换为二进制例 2 把 89 化为二进制数

5

2

2

2

1

2

0

1

0

余数

11

22

48

89

2

2

2

2

0

1

1

0

1注意:1. 最后一步商为 0 ,2. 将上式各步所得的余数从下到上排列,得到: 89=1011001 ( 2 )

Page 30: 算  法  案  例

练习

将下面的十进制数化为二进制数?

( 1 ) 10 ( 2 ) 20 ( 3 ) 128 ( 4 ) 256

Page 31: 算  法  案  例

例 3 把 89 化为五进制数

3 、十进制转换为其它进制

解: 根据除 k 取余法

以 5 作为除数,相应的除法算式为:

所以, 89=324 ( 5 )。

895

175

350

4

2

3

余数

Page 32: 算  法  案  例

将 k 进制数 a 转换为十进制数 ( 共有 n 位 ) 的程序a=anan-1… a3a2a1(k)

=ank(n-1)+an-1k(n-2)+ … + a3k2 +a2k1+a1k0

b=a1k0

b=a2k1

+bb=a3k2 +

b…b=ankn-1

+b

ai=GET a[i]

GET 函数用于取出 a 的右数第 i 位数

INPUT a,k,ni=1b=0

WHILE i<=nt=GET a[i]b=t*k^(i-1)+b

i=i+1WENDPRINT b

END

i=i+1

i=1

b=aiki-1+b

Page 33: 算  法  案  例

小结与作业

22 、掌握二进制与十进制之间的转换、掌握二进制与十进制之间的转换

11 、进位制的概念、进位制的概念

作业:课本 P38 ,习题 1.3第 4 题

Page 34: 算  法  案  例

算法案例

(第四课时)

Page 35: 算  法  案  例

排序的算法将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

方法 1 :S1 :比较第 2 个数与第 1 个数的大小,并排序得 3 , 8

S2 :将第 3 个数与 S1 中的数比较,插入适当的位置,得到2 , 3 , 8

S3 :将第 4 个数与 S2 中的数比较,并插入适当的位置,如此继续下去,直到把最后一个数插入到上一步已排好的数列的合适位置为止,得到:

2 , 3 , 5 , 8

2 , 3 , 5 , 8 , 9

2 , 3 , 5 , 6 , 8 , 9

S4 :S5 :

Page 36: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9, 6

方法 1 :

过程演示

8 3 2 5 9 6

开始

排第 1次排第 2次排第 3次排第 4次

8 3 2 5 9 6

3 8 2 5 9 6

2 3 8 5 9 6

2 3 5 8 9 6

2 3 5 8 9 6

排第 5次

2 3 5 6 8 9

Page 37: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

方法 2 : S1 :用第 1 个数与第 2 个数比较,若前者小则两数不变,否则,交换这两个数的位置。

S2 :按这样的原则,比较第 2 个数和第 3 个数,前者小则两数不变,否则,交换这两个数的位置……直到比完最后两个数。(称为“一趟”)

S3 :如果前一趟的比较中交换的次数为 0 ,说明排序已完成,否则回到 S2 。

根据题意,一趟后的结果是什么?

为什么说前一趟的比较中交换为 0次时,排序完成?

3 , 2 , 5 , 8 , 6 , 9

Page 38: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 1 趟 8

3

2

5

9

6

3

8

2

5

9

6

3

2

8

5

9

6

3

2

5

8

9

6

3

2

5

8

9

6

3

2

5

8

6

9

该趟中交换的次数为 ________ 次4

Page 39: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 2 趟 3

2

5

8

6

9

2

3

5

8

6

9

2

3

5

8

6

9

2

3

5

8

6

9

2

3

5

6

8

9

2

3

5

6

8

9

该趟中交换的次数为 ________ 次2

Page 40: 算  法  案  例

排序的算法

将下面数字按由小到大的顺序排列

8 , 3 , 2 , 5 , 9 , 6

请将每一趟的结果写出来

第 3 趟 2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

2

3

5

6

8

9

该趟中交换的次数为 ________ 次,0

所以排序的结果为:

2 , 3 , 5 , 6 , 8 , 9

Page 41: 算  法  案  例

练习:

1 、根据前面的介绍阅读课本 P32 的例 3 ,并完成图 1.3-6 的填空

Page 42: 算  法  案  例

课后作业

课本 P38 的习题 1.3 第 2 、 3 题