第一篇:我们可以把100以内的质数分为五类记忆
我们可以把100以内的质数分为五类记忆。
第一类:20以内的质数,共8个:2、3、5、7、11、13、17、19。
第二类:个位数字是3或9,十位数字相差3的质数,共6个:23、29、53、59、83、89。第三类:个位数字是1或7,十位数字相差3的质数,共4个:31、37、61、67。
第四类:个位数字是1、3或7,十位数字相差3的质数,共5个:41、43、47、71、73。第五类:还有2个持数是79和97。
第二篇:‘100以内质数的求解’教学设计
Qbasic程序设计的综合应用
——‘100以内质数的求解’教学设想
四川省安岳中学
邓 斌
一、教学目标
1.知识目标:
理解For-Next计数循环语句和If-Endif分支语句的结构、功能、执行方式和注意事项; 知道Qbasic的常见标准运算符和标准函数:取余运算符(mod)和取整函数(int(x))。2.能力目标:培养学生设计算法和构建数学模型的能力。
3.情感目标:激发学生学习计算机知识的兴趣和培养学生主动用计算机知识解决实际问题的习惯。4.过程与方法
通过数学方法探究得出解决问题的算法,构建解决问题的数学模型,从而得到解决问题的程序。
二、教学重点、难点、关键点
1.重 点:探究100以内的质数问题的算法;
2.难 点:构建解决100以内的质数问题的数学模型;
3.关键点:如何将解决问题的数学思想转换为程序设计思想;
三、教材分析
本节课的内容是进一步运用Qbasic的知识来解决实际问题,是前面学习过的标准运算符、语句定义符、基本语句等一系列Qbasic基础知识的综合运用,同时还是训练学生思维的良好素材。目前,学生已经学习过循环结构的基本语句:For-Next语句、Do while-Loop语句。本节课再用循环结构来解决该问题,充分体现了计算机知识产生于实践而又应用于实践的辨证关系,借这个机会进一步向学生渗透理论联系实际的思想,增强学生动手用计算机知识解决实际问题的意识,培养良好的习惯,提高分析问题,解决问题的能力,为以后用计算机知识解决更为复杂的问题奠定坚实的基础。
四、学情分析
程序设计的思维过程是符合学生的思维方式的,但是探究解决问题的算法和数学模型的构建是比较困难的。由于很多学生从开始接触计算机程序设计时就存在这样错误的认识:认为问题的解决完全是依靠计算机,面临问题时,只须将问题原样的输入到计算机上就大功告成。而事实上计算机本身是不能分析和思考问题的,因此,教师必须向学生明确,计算机解决的问题实质是通过人事先编写的程序来实现的。因此,解决本问题的根本就是采用什么样的算法来编写程序告诉计算机,所以在构建数学模型、确定算法时学生会面对一定困难,从而产生畏难的情绪。
五、教法分析
针对本节课的内容的条理性强,思维严谨的特点,本节课将采用师生互动的教学方式,引导学生自己独立思考、分析问题,共同合作讨论解决问题。同时,结合多媒体电脑、大屏幕进行演示以实现教学的优化组合,从而提高教学的效果。从课型来看,本节课为探究性的学习课。
六、学法分析
因为本问题算法的设计和数学模型的构建是相对比较困难的,因此主要是引导学生学会自主学习,合作学习,让他们自己去构建数学模型,寻找实现该问题的算法。使学生学会在教师的引导之下自己思考、分析、解决问题,提高自己分析、解决问题的能力。
七、教学过程设计
1、温故知新,导入新课
简单复习If-Endif分支结构语句和For-Next计数循环语句等Qbasic的基本知识。
a.分别给出上述两种语句的语句格式,结合具体的语句格式简要的回顾复习它们各自的功能、执行方式和注意事项。
b.给出本节课所要解决的问题:求解100以内的质数。
提问1:什么是质数?质数在数学中是如何定义的?(要求学生回答)
最后由老师给出质数的数学定义:所谓质数,是指除了能被1和它本身整除之外,不能被其他任何数整除的数。
2、引导学生深入分析问题,探究解决问题的算法,构建解决问题的数学模型
提问2:质数的数学定义中含有哪些对我们解决问题有用的信息?
提问3:如果我们站在纯数学的角度去考虑这个问题,那又该怎样去解决?
以上两个问题均先让学生自己思考、分析,同桌之间可以讨论,然后请同学起来回答他的答案,根据回答的情况再继续分析问题。对于问题3,学生一般都能够回答出“穷举法”这一解决问题的思想,在这种情况下,可以让学生先按数学方法直接把100以内的所有质数全部列举出来,并写在草稿纸上,以备和自己编写的程序所执行出来的结果进行比较。(此时应提醒学生:数学中规定,1不是质数;)
引出“穷举”这一概念之后,问题则变为:如何用Qbasic程序语句来实现从2到100的一一列举。把本问题作为本堂课的提问4,先让学生自己独立思考解决的办法,然后再由教师给出实现‘从2到100的一一列举’的解决方案:利用计数循环语句For-Next来实现,即For n=2 to 100——①;
接下来,问题则变为:如何在列举的过程中将满足“除了能被1和它本身整除之外,不能被其他任何数整除”的数筛选出来。
在数学中,筛选质数的方法很简单,就是在一一列举的过程中判断它是否满足“除了能被1和它本身整除之外,不能被其他任何数整除”,若满足,则是质数,否则,就不是质数。该方法在解决提问3时,学生就已经用到了,现在的关键是如何用Qbasic程序语句将该方法描述出来。
提问5:如何将质数的数学定义转换为Qbasic程序语句?
先让学生自己思考解决的办法,以学习小组为单位进行探究、分析、讨论,然后请每个小组选一位同学起来说说他的解决方案,根据学生回答的情况再继续分析问题,最后由教师给出解决方案;
方案描述:要判断自然数N是否为质数,我们可以用N与2 至(N-1)之间的所有自然数来进行“取余运算”,即N mod M,且(2≤M≤(N-1));如果取余运算的结果均不为0,即(N mod M)≠0,且(2≤M≤(N-1)),则说明N为质数,否则,N不是质数。
该方案的Qbasic描述如下: For m=2 to(n-1)If(n mod m)=0 then n不是质数 End if ——② Next m 上述两个方案结合在一起就是我们为这个问题所构建的数学模型,其中①和②的描述是解决本问题的算法,这也是本堂课的关键点,此时,要进一步引导学生利用这一数学模型和算法来解决该问题,写出解决本问题的完整算法,突破本堂课的重、难点。
3、求解解决问题的算法
根据上面的描述,我们可以写出如下的算法:
For n=2 to 100 //外层循环:一一列举2至100的自然数// Flag //设置标志Flag,Flag的初值为1// For m=2 to(n-1)//内层循环:判断n是否为质数// If(n mod m)=0 then Flag的值为0 End if Next m //结束内层循环// If Flag then //若Flag=1,则打印质数n// 打印质数n End if Next n //结束外层循环// 根据上述算法确定程序中要涉及的变量,先让学生自己去尝试着写出解决本问题的程序代码,然后再由教师给出如下的参考程序代码。
4、程序的实现
Cls For n=2 to 100
Flag=1 For m=2 to(n-1)If(n mod m)=0 then Flag=0 End if Next m If Flag=1 then Print n; End if Next n End
5、在Qbasic环境下调试运行本程序,运行结果如下: 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
八、问题的优化和推广
1、由质数的数学定义可以看出:2至100之间,除了2以外的任意一个偶数都不是质数,所以应该首先排除这些偶数,但是在本问题的解决方案中并没有考虑到这种情况,而是从2到100一一列举并判断的,因此,根据本方案写出的程序的执行效率并不是最优的。故我们可以这样来优化解决问题的方案:在列举自然数2到100的时候先进行奇、偶的判断:若遇偶数,则直接列举该偶数的下一个数;若遇奇数,则再进一步判断是否为质数,从而实现程序的优化。(可以把此优化方案的程序实现作为学生的课后作业,提示学生:‘2’应该首先单独输出,奇、偶数的判断要利用取整函数int(x)来实现)
2、该问题我们是通过IF-ENDIF分支语句和For-Next计数循环语句的结合来解决的,前面我们还学习过DO while-Loop条件循环语句,那么这个问题是否能够通过IF-ENDIF分支语句和DO while-Loop条件循环语句的结合来解决?如果能,程序又该怎样来实现?(这个问题可以作为学生课后的思考题)
九、课堂小结
本节课讲授了Qbasic循环结构语句在解决实际问题中的应用,其实也是Qbasic基础知识的综合运用,通过本堂课知识的学习,让学生明白在解决实际问题的过程中,一定要认真分析问题,构建良好的数学模型,寻求最佳的算法,只有这样踏踏实实的完成每一个环节,最终才能得到解决问题的程序。
十、提高训练(本问题的进一步优化)
判断一个数N是否为质数,不必将N与2到(N-1)之间的数一一进行取余运算,只需将N与2到N的算术平方根之间的数一一进行取余运算即可,即N mod M,且(2≤M≤sqr(N));如果取余运算的结果均不为0,即(N mod M)≠0,且(2≤M≤sqr(N)),则说明N为质数,否则,N不是质数。(该方案的算法思想点到为止,让学有余力的学生自己去思考,独立完成该方案的程序实现)3