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;
}
上述代码对于较小的输入工作正常,但是当我尝试提供数字类似于> 100000000 ,它显示的是分段错误。有人可以帮我吗?谢谢!给定一个偶数(大于2),返回总和等于给定数的两个素数
尝试使用'无符号long'或'无符号长long',而不是'int'在你的程序。 –
使用'std :: vector'而不是数组。 – molbdnilo
这不是标准的C++;它使用了几个编译器支持的VLA扩展。 – Justin