把你的代码改了一下,加了详细的注释:
#include
#include
void main()
{
int m,i;
int k;
for(m=100;m<=200;m++)//200后面的逗号,改为分号;
{
k=(int)sqrt(m);//强制转换一下就不会有警告了
for(i=2;i<=k;i++)//k后面的逗号,改为分号;
{
if(m%i==0)
break;
}
// 判断是否输出放到循环里面,才能输出所有的素数
if(i>=k+1)
printf("%d ",m);
}
}
你这样根本就求不出来,最多输出一个,应该这样
但你这里错了 if(i>=k+1) i 永远 小于 k+1
改为
for(m=100;m<=200, m++)
{
k=sqrt(m);
for(i=2;i<=k,i++)
if(m%i==0) break;
if(i>=k)
printf("%d ",m);
}
#include
#include
void main()
{
int m,i;
int k;
for(m=100;m<=200; m++)/*改为分号*/
{
if(m!=2 && m%2==0)
continue;/*去掉2以上的偶数*/
k=sqrt(m);
for(i=2;i
if(i>=k) printf("%d ",m);/*此处要改,放在循环里*/
}
}
#include
#include
void main()
{
int m,i;
float k;
for(m=100;m<=200;m++)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k) printf("%d ",m);
}
}
错误比较多你自己看吧,我的是从你那改的,
for中的;问题,printf的位置问题和判断条件等都有问题,你自己思考为什么是i>k吧,我讲多了也没用。
#include
#include
#define DEBUG 0
int main()
{
int m,i;
double k;
for(m=100;m<=200;m++)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k)printf("%4d",m);
if(DEBUG)printf("\nm=%d,k=%f,i=%d",m,k,i);
}
return 1;
}