首页 > 解决方案 > 为什么我的代码会出现 SIGSEGV 运行时错误?

问题描述

我正在尝试在此代码中实现 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)但它不适用于在线评委。

标签: c++11runtime-error

解决方案


推荐阅读