当前位置:编程学习 > C/C++ >>

c语言编程求素数!高手速来解答啊!

#include<math.h> main() { int j,n=0,i; for(j=100;j<=600;j++) {int k; k=sqrt(j); for(i=2;i<=k;i++) if(j%i==0) break; if(i>k) n++; } printf("%d\n",n); } 这个程序是用来求100到600间的素数个数; 我疑惑的是第二个if(i>k)为什么不能写成if(i=k+1) 这个i在第二个for中不是只能最大加到k么! 当i不满足循环条件的时候,这个i不就是等于k+1么? 跳出for之后i就不自加了吧? 那就是只能等于K+1吧?
答案:其实都是可以的

但是考虑到优化就要选择更优的

因为i==k+1,这句要首先运算一下k+1之后再做比较
而i>k,是直接做比较,要少运算一次
在一般的小程序里,这个优化,没什么明显的效果
但是在做游戏开发,以及其他大型的高效的系统里,就需要对每条语句进行优化,尽量减少不必要的运算,来提升效率
其他:i == k + 1 两个等号
退出循环的条件就是这个

所以你说的是对的,写法各异,看自己喜欢吧 i=k+1是赋值语句
判断用i==k+1

上一个:c语言怎么判断大于32767的,或者小于-32768的?
下一个:C语言软件设计大赛经验

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,