我的C语言哪里错了#include <stdio.h> #include <math.h> main() { int i,j,k,count=0; for(i=101;i<=200;

2025-06-22 07:55:09
推荐回答(1个)
回答1:

#include
#include
void main()
{
int i,j,k,count=0;
for(i=101;i<=200;++i)
{
j=(int)(sqrt((double)i));
for(k=2;k<=j;++k)
{
if(i%k==0)
break;
}
if (k > j)
{
printf("%d\n",i);
++count;
}
}
printf("%d\n",count);
}
错误的原因:你只是把k=2的时候判断了一下就break了,应该是从2到当前数的平方根的数全部遍历判断一遍再下结论是否是素数。
ps:能用前置++就不要用后置++,前置++的效率要高,还有sqrt在vs2005上的参数是没有int型的,所以为了让你的程序尽可能地兼容,把i强转为double型