vector<int> Solution::primesum(int n) {
int prime[n+1];
for(int i=0;i<n+1;i++){
prime[i]=1;
}
prime[0]=0;
prime[1]=0;
for(int i=2;i<=sqrt(n);i++){
if(prime[i]==1){
for(int j=2;i*j<=n;j++)
prime[i*j]=0;
}
}
vector <int> sum;
for(int i=2;i<=(n)/2;i++){
if(prime[i]==1&&prime[n-i]==1){
sum.push_back(i);
sum.push_back(n-i);
return sum;
}
}
return sum;
}
上面的代码适用于较小的输入但是当我尝试为它提供类似&gt; 100000000的数字时,它显示出分段错误。有人可以帮帮我吗?谢谢!
答案 0 :(得分:0)
最有可能int prime[n+1]
导致堆栈溢出(100'000'000需要堆栈上约400 MB)。我建议改为使用std::vector<int> prime(n+1)
。