c言語で入力されたnに対して、n<p<=2nを満たす素数pの個数を判定するプログラムなのですが、nが23200を超えたあたりでプログラムが強制終了してしまいます。いったいなぜのでしょうか?
できれば、どこをどう直したらよいのか教えていただけるとありがたいです。ちなみに素数判定はエラトステネスのふるいの考え方を用いています。
また、実行時間が長くなりすぎるということでもなさそうです。
#include <stdio.h>
int main(void){
int a[250000],i,j,n,count=0;
while(scanf("%d",&n)==1){
for(i=2;i<=2n;i++){
a[i] = 1;
}
for(i=2;i<=2n;i++){
if(a[i]==0) continue;
else{
for(j=i;ij<=2n;j++){
a[ij] = 0;
}
}
}
for(i=n+1;i<=2n;i++){
if(a[i]==1) count++;
}
printf("%d\n",count);
count = 0;
}
return 0;
}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/26 14:59