C++ 给定偶数(大于2),返回两个素数,其和等于给定的数 向量解::素数和(int n){ 整数素数[n+1]; for(int i=0;i

C++ 给定偶数(大于2),返回两个素数,其和等于给定的数 向量解::素数和(int n){ 整数素数[n+1]; for(int i=0;i,c++,C++,最有可能int prime[n+1]导致堆栈溢出(100'000'000需要约400 MB的堆栈)。我建议使用std::vector prime(n+1)< /p> >在程序中使用未签名的长< /> >或未签名的长long < /代码>代替 int >代码>使用. STD::向量< /代码>代替数组。这不是标准C++;它使用了一对夫妇编译器支持的VLA扩展。谢谢,但甚至没有用!谢谢,但这也显示了同样的错误。r、 @Namratanwar:在这种情况下无法重现您的问题。您能用新代码打开一个新问题吗

最有可能
int prime[n+1]
导致堆栈溢出(100'000'000需要约400 MB的堆栈)。我建议使用
std::vector prime(n+1)< /p> >在程序中使用<代码>未签名的长< /> >或<代码>未签名的长long < /代码>代替<代码> int >代码>使用.<代码> STD::向量< /代码>代替数组。这不是标准C++;它使用了一对夫妇编译器支持的VLA扩展。谢谢,但甚至没有用!谢谢,但这也显示了同样的错误。r、 @Namratanwar:在这种情况下无法重现您的问题。您能用新代码打开一个新问题吗,包括关于您的平台、编译器、标志a.s.o的信息。
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;
     }