关于一个C++程序问题;求1~100000之间的所有质数用排除法,输出质数并计算数量。

#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intmain(){inta[10... #include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
int a[100000],x=0,b;
for(int m=1;m<=100000;m++)a[m]=0;

for(int i=2;i<=50000;i++)
{
for(int k=2;k<=100000;k++)
{
b=k*i;
if(b<=100000)
{
a[b]=1;
}
}
}
for(int j=1;j<=100000;j++)
{
if(a[j]==0){cout<<j<<endl;x++;}
}
cout<<"有"<<x<<"个质数。"<<endl<<"运行了:"<<(clock()/CLOCKS_PER_SEC)<<"秒。";
system("pause");
return 0;
}
编译成功但运行时:
展开
 我来答
在月湖制定计划的海蓝宝石
2014-11-23 · TA获得超过379个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:202万
展开全部
你定义的a数组长度为100000,下标对应0~99999,你在14行条件b<=100000,当b==100000时数组a会进行a[100000]寻址,发生越界。
更多追问追答
追问

改成a[100001]后为什么等了很久之后变成这样:

追答
你单步调试一下,在b = i*k那里打一个断点,监视一下b的值
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式