我正在尝试在此代码中实现Eratosthenes筛。请记住,编码范围应为100000个数字,最大上限为1000000000。在线判断给出了SIGSEGV运行时错误。请帮忙。
我尝试将数组大小减小到100。它仍然没有用。我已经在局部变量和全局变量之间切换
int primes[100000]={0}, t, a, b ,i,j,k,l;
int main()
{
cin>>t;
for(i=0;i<t;++i)
{
cin>>a>>b;
if(a!=1)
j=a;
else
j=2;
for(;j<=b;++j) // loop for number count
for(k=j*j;k<=b;k+=j) // loop for finding composites
primes[k-1]=1; //marking out all non primes
for(l=a;l<=b;++l)
{
if(primes[l-1]==0 && l-1!=0)
cout<<l<<endl;
}
}
}
它在我的系统上运行良好(我使用的是Dev C ++ 5.11),但不适用于在线法官。