[アルゴリズム] 1から100までの素数を取得(Shell編)

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

今回はShellを使った素数を求めるプログラムですが、デフォルトで100までの数値にしてますが、コマンド実行の際に、上限数値を与えるようにしてもいいかもしれないですね。
とりあえずは、幾つかの言語との速度差などを見たいので、同じ条件にする必要があるので、現状のまま処理します。

ソースコード

実行

コンソールで実行するのでtimeコマンドを付けて、実行時間も計測してみました。
前回のPHP,Pythonの速度計測と比べると、shellは非常に速度が遅いことが分かります。
ディスクIOは早いのに、計算系が弱いという事なんですね。

解説

shellでの数値計算

shellは多言語と違って、if文やfor文などで安易に数値を計算させる事はできません。
一度変数に入れるような処理を挟まないといけないので、面倒くさいと感じる人は多いでしょうね。
そして簡単な演算は以下の方法で実装しましょう。

num=10
res1=expr $num+1
res2=expr $num-1
res3=expr $num*1
res4=expr $num/1
res5=expr $num%1

getPrimeNumber関数内を少し変更

shellの関数はreturnではなく、echoで行うので文字列か数値で対応しなければいけないので、今回のアルゴリズムは、if文で判定してbooleanで返す、今までの方式ではなく、割り切れる数値がなければ”0″、割り切れれば、その数をechoで返すようにしてみました。
これにより、若干ですが、速度向上も見込めるでしょう。

リンク

素数計算プログラム

Javascript
PHP
Python
Shell

アルゴリズム過去記事

http://wordpress.ideacompo.com/?cat=562&tag=Algorithm

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です