返回信息流#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
class PrimArr {
private:
int * prim;
int size;
bool IsPrim(const int &, const int &);
void Init();
public:
PrimArr(int insize = 100) : size(insize) {
prim = new int [size];
Init();
}
~ PrimArr() {
delete prim;
size = 0;
}
const int * arr();
};
bool PrimArr :: IsPrim(const int & e, const int & max)
{
for (int * p = prim; * p <= max; p ++)
if (e % (* p) == 0)
return 0;
return 1;
}
void PrimArr :: Init()
{
if (size > 0)
prim[0] = 2;
else
return ;
int valid = 1;
int dmax = 2;
int dmaxco = 0;
int dmaxdo = 5;
for (int i = 3; valid < size; dmaxco ++, i ++) {
if (IsPrim(i, dmax))
prim[valid ++] = i;
if (dmaxco >= dmaxdo) {
dmaxco = 0;
dmaxdo = 2 * (++ dmax) + 1;
}
}
}
const int * PrimArr :: arr()
{
return (const int *)prim;
}
int main()
{
int dd = 130046; //当dd比130046大的时候则Windows报错关闭
PrimArr pa(dd);
cout << pa.arr()[dd - 1] << endl;
}
求助大牛解释原因。莫非内存不够?可是当时剩余内存还是有800M+呢。。
dd<=130046时,运算出来的结果是正确的。
环境:WinXP SP2, DevCPP。
这是一条镜像帖。来源:北邮人论坛 / cpp / #45571同步于 2010/11/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]求第N个素数的值时N比较大则非法关闭问题。
horikita
2010/11/3镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。