第 11 课时 5.4 算法案例重点难点重点:通过案例分析,体会算法思想,熟练算法设计,进一步理解算法的基本思想,发展有条理的思考和表达能力,提高逻辑思维能力。难点:在分析案例的过程中设计规范合理的算法学习要求 1.理解剩余定理的内涵2.能利用剩余定理解决“韩信点兵—孙子问题”【课堂互动】历史背景:韩信是秦末汉初的著名军事家,据说有一次汉高祖刘邦在卫士的簇拥下来到练兵场,刘邦问韩信有什么办法,不要逐个报数,就能知道场上士兵的人数。韩信先令士兵排成 3 列纵队,结果有 2人多余;接着他立刻下令将队形改为 5 列纵队,这一改,又多出 3 人;随后他又下令改为7 列纵队,这一次又剩下 2 人无法成整行。韩信看此情形,立刻报告共有士兵 2333 人。众人都愣了,不知韩信用什么办法清点出准确人数的。这个故事是否属实,已无从查考,但这个故事却引出一个著名的数学问题,即闻名世界的“孙子问题”。这种神机妙算,最早出现在我国《算经十书》之一的《孙子算经》中,原文是:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:二十三。”所以人们将这种问题的通用解法称为“孙子剩余定理”。【解析】“孙子问题”相当于求关于 x,y,z 的不定方程组的正整数解。根据题意,m 应该满足三个条件:(1)m 被 3 除后余 2,即 (2)m 被 5 除后余 3,即(3)m 被 7 除后余 2,即在自然数中可能存在满足条件的数,首先让 m=2 开始检验条件,若三个条件中有任何一个不满足,则检验下一个数,即 m递增 1,如此循环下去,一直到 m 满足三个条件为止。这种解决问题的方法也称为“穷举法”,这种方法在利用计算机解决问题时非常有效,因为计算机最擅长重复机械的操作。【流程图】【伪代码】【思考】上述算法只能求出最小的满足条件的数,如果要求出 10 个满足条件的数,程序要做何修改?你能否用数学上最小公倍数的知识分析出解决该问题的方法吗?可以这样考虑:5 和 7 的公倍数中能被 3除余 2 的最小的公倍数是 35;3 和 7 的公倍数中能被 5 除余 3 的最小的公倍数是 63;3 和 5的公倍数中能被 7 除余 2 的最小的公倍数是30;因此满足条件的其中的一个数就应是35+63+30,为 128,若减去 3、5、7 的最小公倍数 105 得 23,23 就是满足题目要求的最小的数。你能画出这种算法的流程图吗?【解】算法流程图如下:m←2 End WhilePrint mNYm←m+1...