#8480: 這個bug要怎麼解決


dinghaipi (丁海皮)


#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>

int main(){
bool prime[2147483647];
int a;
int i;
int j;
int k;
for (i=0; i<2147483647; i++)
prime[i] = true;
prime[0] = false;
prime[1] = false;

for(j=2;j<=2147483647;j++)
{
 if(prime[j])
   {
     for (k=j+j; k<2147483647; k+=j)
                prime[k] = false;
   }
}
while((scanf("%d",&a))!=EOF)
{
 if(prime[a]==true)
  {
    printf("質數\n");
  }
 else
  {
   printf("非質數\n");
  }
  a= 0;
}
return 0;
}
=======以上是code=========

跑出結果 CE

total size of local objects too large
 請問有甚麼解決方法嗎?
 

 

#8482: Re:這個bug要怎麼解決


kkmomo (kkmomo)


bool prime[2147483647]; 

 

超過stack上限,請改用動態記憶體配置(存在heap)