少し前にC言語のおさらいをしようと思い、素数を求めるプログラムを書いてみました。 素数とは1とその数だけでしか割り切れない数のこと。数学の内容なのでさすがに奥が深く、色々な素数判定アルゴリズムあるみたいですね。
参考書は、昔からあるロングセラー「新版 明解C言語(著者:柴田望洋氏)」を今回使いました。実際読んでみると、サンプルが多いので、プログラム経験者ならわかりやすいと感じてます。本書の5章に素数を求めるプログラムのコードがあり、それを応用して書いたのが後述のコード"prime.c"です。
概要
今回作成したprime.cの処理の概要はこんな感じです。
出来上がったコードをコンパイルしてプログラムは完成します。それでは簡単に解説していきます。
引数を使えるように
今回は列挙したい素数の件数を引数でプログラムに渡せるようにし、引数なしのときはデフォルトで100万件の素数を列挙するようにしました。引数の範囲は2-1000万件としています。(11-24行目)
素数判定
このプログラムでは試し割り方を用いていて、
と判定しています。コードでは36-49行目がその処理にあたります。
表示処理
画面に素数を列挙する処理(51-60行目)に加え、判定処理の時間と表示処理の時間を出しています。 ちなみにウチのMacBook Air 11 Mid 2013 i5 ではこんな感じで6秒ちょいで計算、2秒弱で表示してます。
calc elapsed time = 6.182908 view elapsed time = 1.993083
異なるパソコンで同じソースコードを使えば簡易的なベンチマークとしても使えますね。コードを改良して高速化を図るのもホビープログラミングとして楽しめます。頭の体操的な使い方にもなるかも^^
gccでコンパイル
Macのターミナルでコンパイルする方法をざっくりと示すと、gcc -o prime.exe prime.c -O2
とコマンドを打つと同一ディレクトリにprime.exeファイルが生成されます。そのままターミナルで./prime.exe
と叩けば実行できますよ。
あと、Macでgccを使うには、Xcode Command Line Toolsがインストールされている必要があります。
まとめ
異なるパソコンで同じソースコードを使えば簡易的なベンチマークとしても使えますね。コードを改良して高速化を図るのもホビープログラミングとして楽しめます。頭の体操的な使い方にもなるかも^^
(突き詰めると既に高速なアルゴリズムがあったりするんですがw)
プログラミングを始めてみたい人とかにも、何か取っ掛かりになるようなものがあるといいですね。

APPLE MacBook Air 1.3GHz Dual Core i5/11.6"/4GB/128GB MD711J/A
- 出版社/メーカー: アップル
- 発売日: 2013/06/11
- メディア: Personal Computers
- この商品を含むブログを見る

- 作者: 柴田望洋
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/08/28
- メディア: 単行本
- 購入: 17人 クリック: 184回
- この商品を含むブログ (45件) を見る