#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int64_t sum=0, c=-1, li[1000000];
bool flag = 1;
for(int i=2; i<=2000000; i++)
{
flag = 1;
for(int j = 0; j<c; j++)
{
if (i%li[j]==0)
{
flag = 0;
break;
}
}
if(flag)
{
sum += i;
li[++c] = i;
}
}
cout<<"done"<<endl;
cout<<sum; // This line causes the program to crash.
return 0;
}
查看上面的代码。 &#34; cout&lt;
使用Code :: Blocks v13.12,GNU GCC编译器,默认设置。 另外,我是新手,编码和StackOverflow:)
答案 0 :(得分:2)
巨大的数组可能对于堆栈而言太大 - 通常,堆栈限制为少量兆字节,有时在资源有限的平台上更少。
改为使用动态数组:
std::vector<int64_t> li(1000000);