Pythonで書く『エラトステネスのふるい』
はじめに
神様のおひとりである「ゆたかさん(@yutakakn)」が最近Pythonを始めたらしく、「エラトステネスの篩」を書いたぜというツイートをされていました。
Pythonで素数を求めるプログラムを書いてみました。チュートリアルを見ながら。forループ自体にelse節がつけられるというのが斬新です。https://t.co/lQG4qwzpSU
— ゆたかさん (@yutakakn) 2018年5月1日
そこで、ゆたかさんはC言語メインの方なのでコードがC言語っぽい書き方だったので、Pythonっぽい書き方で書いてみましたというお話です。 あと、『エラトステネスのふるいとその計算量』という良い記事も見つけたのでリンクだけご紹介。
ソースコード
実行結果
追記というか注意書き
今回のコードはちょっと裏技を使っているので、「良いコード」とは呼べないものです。 何が悪いかというとfor文のループ中に対象となるシーケンス(今回の場合はdata)を書き換えている点です。 荒技なので通常このようなコードは書かない方がいいです。 この点については、Python公式ドキュメントの言語リファレンス-複合文:for文を参照ください。 [リンク:https://docs.python.org/ja/3/reference/compound_stmts.html#the-for-statement]