出口退税软件:c++的一个小问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 06:51:41
#include<iostream.h>
#include<math.h>
void main()
{
int m;
double sqrtm=sqrt(m);
for(m=1;m<1000;m++)
{
for(int i=2;i<=sqrtm;i++)
{
if(m%i==0)
continue;
cout<<m<<endl;
}
}
}

哪里错了
这道题的问题是求1~1000之间的素数
可是怎么一直都是1 怎么改?

...Borland C++ 3.1 编译通过

#include<iostream.h>
#include<math.h>

void main()
{
int m,i;
double sqrtm;
for(m=2;m<1000;m++)
{
sqrtm=sqrt(m);
for(i=2;i<=sqrtm;i++)
{
if(m%i==0)
break;
}
if(i>sqrtm)
cout<<m<<endl;
}
}

问题出在:
1、一上来m还没赋初值就开平方
2、误用了continue,应该用break;

#include<iostream.h>
#include<math.h>
void main(){
double sqrtm;
int flag;
for(int m=2;m<1000;m++){
sqrtm=sqrt(m);
flag=1;
for(int i=2;i<=sqrtm;i++){
if(m%i==0){
flag=0;
break;
}
}
if(flag)
cout<<m<<endl;
}
}

#include<iostream.h>
#include<math.h>
void main()
{
int m;
double sqrtm=sqrt(m); //这里m没有初值
for(m=1;m<1000;m++)
{
for(int i=2;i<=sqrtm;i++)
{
if(m%i==0)
continue; //这里continue;不是这样用的,这样用没有意义 应该这样写if(m%i!=0) break;
cout<<m<<endl;
}
}
}

按照标准,main函数应该是返回int,而不是void的,支持标准的编译器对这个地方可能会报错
把void main()改成int main(),在最后一个}前面加个return 0;
程序本身有什么问题,我就没看了

自己趁这个机会学学调试