内容正文:
第二单元 算法的效率
“韩信点兵”同余法的实现
第十二课
浙教版
学习目标
01
课堂导入
02
抽象与建模
03
算法设计
04
算法的程序实现
05
课堂任务
06
目录
CONTENTS
建构
2
PART 1
学习目标
1.了解同余法的思想,掌握同余法解决问题的一般过程。
2.通过使用同余法解决“韩信点兵”问题,掌握同余法的程序实现,体会算法的多样性。
学习目标
PART 2
课堂导入
课堂导入
我们已经学习了用枚举法、筛选法解决“韩信点兵”的问题,这节课我们学习用同余法来解决“韩信点兵”的问题。
被除数 除数 余数
23 3
23 5
23 7
128 3
128 5
128 7
233 3
233 5
233 7
我们发现,这几个数都是除以3余数是2,除以5余数是3,除以7余数是2。
2
2
2
2
2
2
3
3
3
新知探究
通过表格我们知道,
23、128、233除以3余数都是2,
23、128、233除以5余数都是3,
23、128、233除以7余数都是2。
问题描述
我们可以发现23+105=128,128+105=233,
3×5×7=105。105是3、5、7的公倍数。
得出结论:被除数加上三个除数的公倍数,余数不变
新知探究
问题描述
数学上,两个整数除以同一个整数,若余数相同,那么这两个整数同余。
23、128、233除以3余数都是2
23、128、233除以5余数都是3 23、128、233同余
23、128、233除以7余数都是2
几个同余数之间的差是这几个除数的公倍数的整数倍
PART 3
抽象与建模
新知探究
抽象与建模
在韩信点兵问题中,剩下的士兵总数,用变量x来表示。根据“死伤四五百人”可知,变量x的范围为1000~1100,且要同时满足“x除以3余数为2、x除以5余数为3、x除以7余数为2”这三个条件。
想一想,我们怎么使用同余法来解决这个问题呢?步骤是怎样的呢?
新知探究
问题描述
同余法求解步骤
1.任意找一个同时满足“x除以3余数为2、x除以5余数为3.x除
以7余数为2”的数,比如233
2.该数加或减3、5、7的最小公倍数105的整数倍
3.找到在1000~1100范围内的数即是所求解
PART 4
算法设计
新知探究
算法设计
“韩信点兵”问题同余法算法设计
第一步:用变量s表示取到同时满足三个条件的任意一个数,如233,变量k表示三个数的最小公倍数。
第二步:通过加或减k的整数倍,使s的值大于等于1000且小于等于1100,可以采用循环结构
第三步:根据条件“s小于1000”来选择加k或减k的值,可以采用分支结构。
PART 5
算法的程序实现
算法的程序实现
新知探究
“韩信点兵”问题同余法程序实现
PART 6
课堂任务
课堂任务
这节课我们学习了:使用同余法解决“韩信点兵”问题,并学习了同余法的程序实现。
请同学们根据这节课学习的知识,把“韩信点兵”问题的查找范围调整为2500~2600,修改这节课学习的算法及程序,并输出结果。
谢谢
下节课见!
Thanks!
浙教版
$