注册 登录
编程论坛 C++教室

简单小程序bug

yanpeisen 发布于 2008-11-03 23:14, 753 次点击
生成1-99所有素数
我这样做怎么编译没问题 运行直接弹出错误报告
//打印出1-99间的所有素数
#include<iostream.h>
#include<math.h>
void main()
{
for(int i=1;i<=100;i++)
{for(int j=0;j<i;j++)
if(i%j==0)
break;
cout<<i<<endl;
}}//自己写的 有问题
 下面是正确的
void main()
{
int i,n;
for(n=2;n<=99;n++)
{
int temp=int(sqrt(n));

for(i=2;i<=temp;i++)
if(n%i==00)
break;       //执行break时为非正常结束循环
if(i>temp)
cout<<n<<' ';
}
cout<<endl;
}
4 回复
#2
CZ_xinle2008-11-03 23:21
j不能从0开始,要从2开始。
#3
debroa7232008-11-04 02:28
i%j
对0取模是会出问题地.
#4
hitcolder2008-11-04 09:37
#include<iostream>
using namespace std;
int main()
{
int i,j;
for(i=2;i<=100;i++)
{
for(j=2;j<=i;j++)
{
   if(i%j==0)
   break;
}
   if(j==i) cout<<j<<'\t';
}
return 0;
}
个人感觉这个程序是比较简单的编法,你可以去百度上去搜下看,有很多种不同类型的编法,这种编法简单,但是计算的步骤比较多,楼主可以参考下
#5
yanpeisen2008-11-04 21:24
谢谢 你们
1