为什么我在实现Eratosthenes的Sieve时得到bad_alloc错误
Why am I getting bad_alloc error while implementing Sieve of Eratosthenes
我正在尝试预先计算所有素数。在从1到1000000005的大范围内使用埃拉托色尼筛,但在编译我的代码后得到一个错误…我认为这个问题与向量的大小有关,但是当我使用P.max_size()打印出来时,我没有得到答案。大于我的极限,所以,我认为最大极限仍然没有达到,但我仍然被困在那个错误。请帮帮我
在向量
中我把所有质数都保存为1其余的都保存为0#include<iostream>
#include<cmath>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
long long i,j;
vector<int>P;
P.reserve(1000000005);
for(i=0;i<=1000000;i++)
{
P.push_back(1);
}
P[0]=0;
P[1]=0;
for(i=2;i<=sqrt(1000000);i++)
{
if(P[i]==1)
{
for(j=2;i*j<=100000;j++)
P[i*j]=0;
}
}
long long T,N,M;
scanf("%lld",&T);
while(T--)
{
scanf("%lld %lld",&N,&M);
for(i=N;i<=M;i++)
{
if(P[i]==1)
printf("%lldn",i);
}
printf("n");
}
return 0;
}
P.max_size()
表示向量可以有多大,这与在特定时刻可用/可分配的内存大小有很大不同。当new
运算符不能满足给定内存大小的分配请求时,抛出bad_alloc
异常。正如@Mats所指出的,显然在您的平台中分配失败了。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 解密文件AES_256_CBC返回"bad decrypt"错误
- OpenCV C++神经网络 predict() 函数抛出"Bad argument"错误
- cvLogPolar 导致 opencv 错误"Bad flag (parameter or structure field)"
- 生成文件'fdopen: Bad file descriptor'错误
- 来自 MSDN C++ 示例的 LDAP "The search filter is bad."错误
- 'Pre-mature EOF'和'Bad Character'错误
- 错误:在 CComVariant 中"bad variable type":循环访问 CComSafeArray 时复制
- fwrite 失败(返回 0,错误给出 "Bad address")
- Xcode4:再次"bad codegen, pointer diff"链接器错误