用c语言编写一个程序求100-200之间的所有素数,并输出素数。而下面这个程序怎么运行不出正确结果

用c语言编写一个程序求100-200之间的所有素数,并输出素数。而下面这个程序怎么运行不出正确结果#include<stdio.h>
#include<math.h>
int main()
{
int n,k,m,i;//n为数,k为除数,m用来表示根号n,i用来统计素数的个数
i=0;
for(n=100;n<200;n+=2)
{
m=sqrt(n);
for(k=2;k<=m;k++)
{
if(n%k==0)
break;
else if(k>m)
{
printf("输出的素数:%d\n",n);
i++;
if(i%5==0)//按5个一行输出
printf("\n");
}
}
}
printf("素数的个数为:%d\n",i);
return 0;
}

第1个回答  2016-12-06
n从100开始,每次加2。这样你检索的数据就是100,102,104等等等,都是2的倍数,当然没有素数
第2个回答  2016-12-06
for(n=100; n<200; n+=2),把这句改成
for(n=101; n<200; n+=2)追问

那我改后为什么还是运行没有正确答案啊?

追答

你的代码逻辑有问题,我帮你修改了一下。

#include
#include
int main()
{
int n,k,m,i;//n为数,k为除数,m用来表示根号n,i用来统计素数的个数
i=0;
for(n=101;nm) {
printf("输出的素数:%d\n",n);
i++;
if(i%5==0)//按5个一行输出
printf("\n");
}
}
printf("素数的个数为:%d\n",i);

getchar();
return 0;
}

本回答被提问者采纳
第3个回答  2016-12-06
因为100到200之间的素数都是奇数 你现在n遍历的是偶数本回答被网友采纳