【Python3】素数判定のプログラムを使って遊んでみる
高速化してみる
これから色々遊ぶに当たって、今のままだと計算に時間がかかりすぎます。以下のサイトを参考に、アルゴリズムを改良。
http://d.hatena.ne.jp/r_ikeda/20111028/primed.hatena.ne.jp
改良前のソースコード
改良前のコードは以下の通りです。前回のプログラムを元にして
●2から100000について素数かどうか判定する
●素数の場合、ファイル"prime_loop.dat"に出力する
●実行時間を出力する
ようにコードを変更しています。
改良後のソースコード
改良後のコードは以下の通りです。参考にしたサイトとほぼ同じアルゴリズムになってます。
実行時間の比較
改良前elapsed_time: 120.15407633781433 [sec]
改良後
elapsed_time: 0.47652101516723633 [sec]
うん。むちゃくちゃ速くなりました。
素数の並びをグラフ化してみる
100000までの素数を考える
100000までの素数の並び2, 3, 5, ..., 99991
をグラフ化してみましょう。
試しに素数の値を縦軸にとって、順番にバーッと並べて線で結ぶと以下のグラフのようになります。
うん。ただただ直線っぽいですね…。
0付近は傾きが小さい感じかしますが、この値の範囲だとあんまり面白そうな特徴はありませんね。
10000000までの素数を考える
もっと大きい値までやってみましょう!10000000までの素数の並び
2, 3, 5, ..., 9999991
をグラフ化してみます。
さっきと同じようにプロットしました。
うん。まっすぐですね。さっきとほぼ変わらない。
まとめ
素数を判定するプログラムを使って遊んでみました。素数を使ってもっと面白い図を作りたいです。