アットウィキロゴ

prime.c

  1. // 美しい,段下げが実に美しい これならバグがはいりにくですね (ち)
  2.  
  3. #include <stdio.h>
  4. #include <math.h>
  5.  
  6. int main(void)
  7. {
  8. int i,j,k;
  9. int sq; //
  10. printf("2 ");
  11.  
  12. for(i=3;i<=100000;i+=2)
  13. {
  14. k=0;
  15. // for(j=3;j<=sqrt(i);j+=2) // この4箇所の変更で少し速くなります。
  16. sq = int(sqrt(i)); // なぜだかわかりますか?
  17. for(j=3; j<=sq; j+=2) //
  18. {
  19. if(i%j==0)
  20. {
  21. k=1;
  22. break;
  23. }
  24. }
  25.  
  26. if(k==0) printf("%d ",i);
  27. }
  28.  
  29. printf("\n");
  30.  
  31. return 0;
  32.  
  33.  
  34. /*
  35.  たとえば,101 が素数であるかを判定するのに 2 から 50 の数字でわって
  36. みなければ,いけないのだろうか?
  37.  11 で割って,われなかったら,素数と判定していいと思う。
  38.  正確には 10 まで,調べれば十分ではないだろうか?
  39.  時間を表示するルーチンをつけておいたから,あちらこちらを変更して
  40. スピードが速くなるようにチューニングして下さい。
  41.  10万までの素数の表をつくると何秒かかるか測ってみてください。
  42.  画面に数字を書くところ(24行目)は止めてあります。
  43. */
最終更新:2009年11月11日 23:21
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。