我一直在尝试用C ++实现Eratosthenes筛选。我正在使用Dev C ++ 5.11编译器,每次运行我的代码时,编译器crashes。对于较小的数组值(n = 10000),程序成功运行,但在文本文件中打印garbage values(请查找附加的图像)。我是编程方面的业余爱好者,已经在这个问题上工作了一天多了。很高兴得到任何帮助。 谢谢你的时间! :)
#include <iostream>
using namespace std;
#include <fstream>
int main(){
ofstream myfile("Prime.txt");
int n = 1000000;
int prime[n] = {0};
for (int i = 2; i <= n; i++){
for (int j = i*i; j <= n; j+=i){
prime[j - 1] = 1;
}
}
for (int i = 2; i <= n; i++){
//cout<<prime[i-1]<<endl;
if (prime[i - 1] == 0)
myfile<<i<<" ";
}
myfile.close();
return 0;
}
答案 0 :(得分:-1)
也许数组很大。 32位编译器具有最大大小的限制因子(4 GB限制)。
1.000.000 * 4字节(32位)= 4.000.0000字节
4.000.000 Byte / 1024/1024 = ~3,8 GB