俺のクソレシピ

おもにプログラミングについて俺の趣味についてテキトーに書いています。

Pythonで素数を求めてみた。

こんにちは。えーと、まず見事に僕のパソコンがぶっ壊れちゃいました。なんでしばらく記事はスマホで書くので、プログラムがきちんと動くかは検証していません。もし掲載したコード通りにやってもうまくいかなかったらコメントで教えてください。

さて、では今回の内容に入っていきましょう。このブログで初のPythonプログラムを書いていきたいと思います。で、題名でわかっていると思いますが今回はただ素数を求めるだけです。なんの実用性もありませんが、なんとなく大きい数字の素数ってなんだろうと思って知りたくなったからです。
※このブログではPython3で解説しています。

f:id:myprogramming:20170627164334j:plain

素数の求め方

えーと、素数はいろんな方法で求められると思うのですが、今回はコンピューターの計算速度を活かして人間じゃものすごく大変なやり方で求めたいと思います。その方法とは・・・ただひたすらに全部の数で割って、割り切れた数が1とその数だけなら素数としたいと思います。でも、その方法だと割り切れた数を記録しておかなければならないし1も素数とされてしまうので、割り切れた回数を数えてその回数が2回なら素数としたいと思います。こんな感じで。

まぁ、解説は一応しますが、だいたい分かると思います。
まず、変数aに素数を求めたい範囲を指定します。今回では、1000です。次にfor文で1〜1000まで順番にiに代入します。そしたら、さらに繰り返しで1〜iまで順番にjに代入します。そしてi÷jの余りが0、つまり割り切れたら変数bに1を足していきます。そうすることで割り切れた回数が分かります。で、割り切れた回数が2回だったら素数と判定して表示しています。

プログラムをアレンジしてみる

このプログラムをアレンジすればwhile文で一定時間ごとに永遠に素数を求め続けるようなこともできたりします(パソコンにとても負荷がかかるのであまりやらないようにしましょう)。今回は、引数に指定された数値が素数か求める関数も作ってみました。

素数の求め方さえ分かってしまえばあとは簡単ですね。いくらでもアレンジできます。他の言語で作ることも簡単ですね。

まとめ

今回は、別に使うこともないだろう素数を求めてみました(俺は確認できてない⤵)。まぁ、とにかく簡単ですね。こんなふうに計算をうまく組み合わせれば、素数のような人間だと求めるのが大変なものもかんたんに求めることができてしまいます(俺はPythonを普段電卓としても使ってます)。みなさんも何か求めてみたいけど大変というときにプログラミングで解いてみてはどうでしょうか。今回はこんなところにして、また今度!