■2004/04/16(金)
研修自分すぐ終わって放置っぽいので
|
ひつまぶしに素数を列挙するプログラムを書いてた。最初できたものは遅かったのだが、改良に改良を重ねどんどん早くしていった。100万までの素数を全て書き出すまで1分くらいまで縮まったので、なにげにwebをコソっと見ると、100万まで5秒とか書いてあってしょんぼりしてしまった。(ソースは見てない)
以下僕が何も見ずに書いたソース。うまい改良点ないもんかなってwebで調べればあるのでしょうが、そこは敢えて調べず。だって答えをすぐに出したらまたヒマになってしまう・・・
int main(int argc, char* argv[]) { unsigned int i,j=2,n,k=1; printf("素数出力ver0.55:上限値を入力してください(0:限界まで行く)\n"); scanf("%d",&n); if(n==0) n=2147483647;
printf("1\n"); if(n!=1) printf("2\n"); for(i=3;i<=n;i+=2,k=1){ for(j=2;j<=i;j++){ if((i%j)==0 && j<i){ k=0; break; } if(j>(i/2)){ j=i; break; } } if(k==1) printf("%d\n",j); } printf("更新履歴 Ver0.1:完成 Ver0.2:約二倍高速化 Ver0.3:とっても高速化\n"); printf("Ver0.31:たぶん高速化 Ver0.4:後から来る高速化 Ver0.5:さらに倍\n"); printf("Ver0.55:ドーン\n"); getch(); return 0; }
| | |