错解剖析得真知(四十)
http://www.newdu.com 2025/05/19 11:05:03 人民教育出版社 佚名 参加讨论
错解剖析得真知(四十) § 13.3 算法案例 一、知识导学 1.算法设计思想: (1)“韩信点兵—孙子问题”对正整数m从2开始逐一检验条件,若三个条件中有任何一个不满足,则m递增1,一直到m同时满足三个条件为止(循环过程用Goto语句实现) (2)用辗转相除法找出 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.更相减损术的步骤:(1)任意给出两个正数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数. (3)二分法求方程 ![]() ![]() ![]() S1 取[ ![]() ![]() S2 若 ![]() ![]() ![]() ![]() 若 ![]() ![]() ![]() ![]() 若 ![]() ![]() ![]() ![]() S3 若 ![]() ![]() 二、疑难知识导析 1. ![]() ![]() ![]() ![]() ![]() 2. ![]() ![]() ![]() ![]() ![]() ![]() 3.辗转相除法与更相减损术求最大公约数的联系与区别: (1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显. (2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到. 4.用二分法求方程近似解,必须先判断方程在给定区间[ ![]() ![]() ![]() 三、经典例题导讲 [例1] ![]() ![]() ![]() ![]() ![]() A.16,-1,4,3 B.15,0,4,3 C.15,-1,3,4 D.15,-1,4,3 错解:根据 ![]() ![]() ![]() ![]() ![]() 错因:对 ![]() 正解:不超过-0.05的整数是-1,所以答案为D. [例2] 所谓同构数是指此数的平方数的最后几位与该数相等.请设计一算法判断一个大于0且小于1000的整数是否为同构数. 错解: 算法思想:求出输入数的平方,考虑其个位或最后两位或最后三位与输入数是否相等,若相等,则为同构数. Read x ![]() If ![]() ![]() ![]() Print x End if End 错因:在表示个位或最后两位或最后三位出现错误,“/”仅表示除,y/10,y/100,y/1000都仅仅表示商. 正解:可用 ![]() Read x ![]() If ![]() ![]() ![]() Print x End if End [例3]《孙子算经》中的“物不知数”问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”可以用下面的算法解决:先在纸上写上2,每次加3,加成5除余3的时候停下来,再在这个数上每次加15,到得出7除2的时候,就是答数. 试用流程图和伪代码表示这一算法. 解:流程图为: ![]() 伪代码为: 10 ![]() 20 ![]() 30 If ![]() 40 If ![]() ![]() Goto 80 50 End if ![]() 60 ![]() 70 Goto 40 80 End 点评:这是孙子思想的体现,主要是依次满足三个整除条件. [例4]分别用辗转相除法、更相减损法求192与81的最大公约数. 解:辗转相除法: S1 ![]() S2 ![]() S3 ![]() S4 ![]() S5 ![]() 故3是192 与81 的最大公约数. 更相减损法: S1 ![]() S2 ![]() S3 ![]() S4 ![]() S5 ![]() S6 ![]() S7 ![]() S8 ![]() S9 ![]() 故3 是192与81的最大公约数. 点评:辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少.辗转相除法是当大数被小数整除时停止除法运算,此时的小数就是两者的最大公约数,更相减损术是当大数减去小数的差等于小数时减法停止,较小的数就是最大公约数. [例5]为了设计用区间二分法求方程 ![]() ![]() ![]() 图13-3-2 流程图为 ![]() 图13-3-3 伪代码为 10 Read ![]() 20 ![]() 30 ![]() 40 ![]() 50 If ![]() 60 If ![]() 70 ![]() 100 End if 80 Else 90 ![]() 100 End if 110 If ![]() 120 Print ![]() 130 End 点评:二分法的基本思想在必修一中已渗透,这里运用算法将二分法求方程近似解的步骤更清晰的表述出来. [例6] 用秦九韶算法计算多项式 ![]() ![]() ![]() 解: 根据秦九韶算法,此多项式可变形为 ![]() 按照从内到外的顺序,依次计算一次多项式当 ![]() ![]() ![]() ![]() ![]() 故当 ![]() ![]() 点评:秦九韶算法的关键是n次多项式的变形. 把一个 ![]() ![]() ![]() ![]() ![]() 四、典型习题导练 1.以下短文摘自古代《孙子算经》一书,其引申出的“大衍求一术”称为“中国剩余原理”:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”答曰( ). A.二十一 B.二十二 C.二十三 D.二十四 2.用辗转相除法求52与39的最大公约数的循环次数为( ). A.1次 B.2次 C.3次 D.5次 3.下面程序功能是统计随机产生的十个两位正整数中偶数和奇数的个数,并求出偶数与奇数各自的总和. For I from 1 to 10 ![]() Print x; If Then ![]() Else ![]() End If End for Print “奇数个数=”; ![]() ![]() 4.若一个数的各因子之和正好等于该数本身,则该数成为完数.请补充完整下列找出1~100之间的所有完数的伪代码. For ![]() ![]() For b from 2 to If mod(a,b)=0 Then End if End For If Then Print a End if End For End 5.设计求被9除余4,被11除余3的最小正整数的算法,画出流程图,写出伪代码. 6.利用辗转相除法或更相减损术求324,243,135的最大公约数. (责任编辑:admin) |
- 上一篇:椭圆的参数方程的几点应用
- 下一篇:构建仿射坐标系解题