c++11 - 为什么我的代码会出现 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)但它不适用于在线评委。
解决方案
推荐阅读
- android - 代理后面的 AVD 模拟器没有互联网
- javascript - 带有连接或大小写的 mysql 条件子查询
- c++ - if-else 语句无法正常工作的奇怪错误
- angular - 如何验证日期并在格式不正确时显示错误
- python - 无法以正确的方式在方法中重用收集的链接
- node.js - 如何在 adobe reader 中使用 nodejs express 在本地打开文件
- laravel - 如何在 Laravel 中更新 Horizon.php 以及如何计算队列中的进程数?
- python - 为什么“pip install”在 Anaconda 3.7 中不起作用?
- reactjs - 无法创建反应,中止安装 yarnpkg add --exact react react-dom react-scripts cra-template 失败
- typescript - 加载 RxJS Typescript 类型而不从 CommonJS 模块导入?