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语言软件设计大赛经验