题目:将100~200之间的素数输出
1、首先,我们要意识到,找出某个区间内符合条件的数,就需要对这个区间内的所有数进行遍历,而最常用的遍历方法就是利用for循环;
2、其次,在确定了遍历区间后,就要根据符合条件的数来进行条件限定。例如本题中要求的是找到区间内的所有素数,那么我们首先就要明确素数的概念:一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数叫素数;
3、然后,我们便需要思考如何用数学关系式来清楚地表达素数。根据素数的概念,当一个数除以在这个区间内所有不是1且不是其本身的数时:若其余数是0,就代表可以被整除,也就是说其还有其他因数,所以在此区间内此数就不是素数;若其余数不是0,那么这个数在这个区间内便是素数;
4、基本的思路理清楚以后,我们就要和计算机进行交流,把我们大脑中的逻辑语言转化为计算机可以看懂的语言:
①定义两个int变量:i,j,分别作为除数和被除数
②最外层定义一个for循环,确定被除数的范围区间100~200
③下面再嵌套一层for循环,确定除数的区间,因为是除了1和其本身以外的数,所以j应该从2开始,结束区间由i为上限
④写一个if判断语句,利用取余公式i%j来确定其余数是否为0:若为0,就说明i可以整除j,则退出循环
⑤通过以上方式,便会排除④中不是素数的数,那么剩下的数便是素数
1、熟悉遍历方式,确定初始值和遍历范围;
2、具体问题具体分析,牢记素数的判别表达式;
3、理解break的含义,以及其和continue的区别。
分别判断m=除以i = 2,3,4,5,6,...,24(=m-1)后,能不能除尽(余数为0,m%i=0)。如果有能除尽的,m就不是素数; 如果都不能除尽,m就是素数。这样判断也可以,但有点浪费!
5*5=25,去掉大于5的判断。只判断2到5就可以了。去掉大于5的数有点武断?那是为什么哪?
你说可能m/(k+2)可能除尽?
由在上边已经证明了的m/(k+1)除不尽,
则上式中第二项是真分数,m/(k+2)也除不尽。
(2)如果m/sqrt(m)能除尽,就证明m不是素数了,break。以下是画蛇添足了。
证明m/(k+2)也除不尽与(1)一样。略。
}版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。