- ベストアンサー
数十万番目の素数を表示させるプログラム
以下のようなプログラムを作ってみたのですが、計算結果を出すのに大体10分くらいかかってしまいます。自分の知識の範囲でできる限りの工夫はしてみたのですが、10分はちょっと長すぎなのでもう少し短縮できる方法をどなたか教えてください。よろしくお願いします。 #include <stdio.h> #include <math.h> #include <time.h> int main(void) { int gakuseki,n,no,i,prime,j; time_t t1,t2; printf("学籍番号を入力して下さい。\n"); scanf("%d",&gakuseki); time(&t1); n=gakuseki%100000+900000; printf("%d番目の素数を計算中...\n",n); no=1; if(n==1){ i=2; }else{ i=1; while(no<n){ prime=1; i+=2; for(j=3;j<=sqrt(i);j+=2){ if(i%j==0){ prime=0; break; } } if(prime==1) no+=1; } } time(&t2); printf("%d番目の素数は%dです。\n",no,i); printf("計算時間は%ld秒でした。\n",t2-t1); return 0; }
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (8)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.9
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.8
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.7
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.6
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.5

noname#30727
回答No.4
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.3
- water-cooled
- ベストアンサー率14% (76/538)
回答No.2
お礼
ありがとうございました!malloc/freeについていろいろ調べてやってみると相当速くなりました。100万番目の素数で大体8秒くらいです。本当嬉しいです!感謝しています。