2から10000の素数を求めるプログラム(コメ多くてすみません)
なんですが、コンパイル後起動させようとするとそのまま停止
してしまいます。m=1000にして1000までの素数を求めると起動
します。なぜでしょうか?ただパソコンのスペックが低いせい
かもしれませんが・・・

int main(void)
#define l 10000
{
int m=10000,i,j,q,p[l];

for(i=1;i<m;i++) p[i]=0; /*配列の初期化=フラグを0にしておく.フラグが0の間は素数の可能性がある*/
p[1]=1; /*1は素数じゃないので除外(=配列に格納されてるフラグを1にする)*/

q=2;
for(j=pow(q,2);j<m;j=j+q) p[j]=1; /*p[4]=1,p[6]=1,p[8]=1,....2以外の偶数は素数じゃないので除外*/

/*ここからは奇数の中で素数じゃないのを除外するループ*/
q=3; /*1以外で一番小さい奇数3を最初に代入*/
while(pow(q,2)<=m){
for(j=pow(q,2);j<m;j=j+2*q) p[j]=1;/*p[pow(3,2)=9]=1,p[9+2*3=15]=1,p[15+2*3=21]=1,...と3の倍数で
再び奇数となるものだけを除外していく*/
q += 2; /*2加算することにより、次は5,その次は7の倍数を除外...と順に奇数をたどって除外していく*/

}
/*ココからは最終的にフラグが0だった(=素数と判明した)数を出力する*/

for(i=1;i<m;i++){ /*i=2にしておけばp[1]=1;は書かなくていい*/

if(p[i]==0) printf("%d\n",i);
}
}