5知识讲解_算法案例_基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法案例

【学习目标】

1.理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析;

2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序;

3.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质;

4.了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换.

【要点梳理】

要点一、辗转相除法

也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的.利用辗转相除法求最大公约数的步骤如下:

第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;

第二步:若r0=0,则n为m,n的最大公约数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;

第三步:若r1=0,则r0为m,n的最大公约数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;

……

依次计算直至r n=0,此时所得到的r n-1即为所求的最大公约数.

用辗转相除法求最大公约数的程序框图为:

程序:

INPUT “m=”;m

INPUT “n=”;n

IF m

x=m

m=n

n=x

END IF

r=m MOD n

WHILE r<>0

r=m MOD n

m=n

n=r

WEND

PRINT n

END

要点诠释:

辗转相除法的基本步骤是用较大的数除以较小的数,考虑到算法中的赋值语句可以对同一变量多次赋值,我们可以把较大的数用变量m 表示,把较小的数用变量n 表示,这样式子)0(n r r q n m <≤+⋅=就是一个反复执行的步骤,因此可以用循环结构实现算法.

要点二、更相减损术

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

更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之.

翻译出来为:

第一步:任意给出两个正整数;判断它们是否都是偶数.若是,用2约简;若不是,执行第二步. 第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数.

理论依据:

由r b a r b a +=→=-,得b a ,与r b ,有相同的公约数

更相减损术一般算法:

第一步,输入两个正整数)(,b a b a >;

第二步,如果b a ≠,则执行3S ,否则转到5S ;

第三步,将b a -的值赋予r ;

第四步,若r b >,则把b 赋予a ,把r 赋予b ,否则把r 赋予a ,重新执行2S ;

第五步,输出最大公约数b .

程序:

INPUT “a=”,a

INPUT “b=”,b

WHILE a<>b

IF a>=b

a=a-b;

ELSE

b=b-a

WEND

END

PRINT b

或者

INPUT “请输入两个不相等的正整数”;a ,b

i=0

WHILE a MOD 2=0 AND b MOD 2=0

a=a/2

b=b/2

i=i+1

WEND

DO

IF b

t=a

a=b

b=t

END IF

c=a -b

a=b

b=c

LOOP UNTIL a=b

PRINT a^i

END

要点诠释:

用辗转相除法步骤较少,而更相减损术虽然有些步骤较长,但运算简单.

要点三、秦九韶计算多项式的方法

1

2

1210

1

23

1210

23

1210

1210()()(())((()))n n n n n n n n n n n n n n n n n n n f x a x a x a x a x a a x a x a x a x a a x a x a x a x a a x a x a x a x a --------------=+++++=+++++=+++++=

=+++++

令12(1)((()))k n n n n k n k v a x a x a x a x a -----=+++++,则有01n

k k n k

v a v v x a --=⎧⎨=+⎩,

其中n k ,2,1=.这样,我们便可由0v 依次求出n v v v ,,21;

1323212101,,

,

a x v v a x v v a x v v a x v v n n n n n +=+=+=+=----

要点诠释:

显然,用秦九韶算法求n 次多项式的值时只需要做n 次乘法和n 次加法运算

要点四、进位制

进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值.可使用数字符号的个数称为基数,基数为n ,即可称n 进位制,简称n 进制.现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数.

对于任何一个数,我们可以用不同的进位制来表示.比如:十进数57,可以用二进制表示为111001,也可以用八进制表示为71、用十六进制表示为39,它们所代表的数值都是一样的.

表示各种进位制数一般在数字右下角加注来表示,如111001(2)表示二进制数,34(5)表示5进制数.

1.k 进制转换为十进制的方法:

012211)(0121a k a k a k a k a a a a a a a n n n n k n n +⨯+⨯++⨯+⨯=--- ,

把k 进制数a 转化为十进制数b 的算法程序为:

INPUT “ a,k,n=”;a,k,n

i=1

b=0

WHILE i<=n

t=GET a[i]

b=b+t*k^(i-1)

i=i+1

WEND

PRINT b

END

2.十进制转化为k 进制数b 的步骤为:

第一步,将给定的十进制整数除以基数k ,余数便是等值的k 进制的最低位;

第二步,将上一步的商再除以基数k ,余数便是等值的k 进制数的次低位;

第三步,重复第二步,直到最后所得的商等于0为止,各次所得的余数,便是k 进制各位的数,最后一次余数是最高位,即除k 取余法.

要点诠释:

1、在k 进制中,具有k 个数字符号.如二进制有0,1两个数字.

2、在k 进制中,由低位向高位是按“逢k 进一”的规则进行计数.

3、非k 进制数之间的转化一般应先转化成十进制,再将这个十进制数转化为另一种进制的数,有的也可以相互转化.

【典型例题】

类型一:辗转相除法与更相减损术

例1.用辗转相除法求下列两数的最大公约数,并且用更相减损术检验你的结果:

(1)80,36;(2)294,84.

【答案】(1)4(2)42

相关文档
最新文档