#!/bin/bash echo 'What number do you wanna factor?' read number #素因数分解したい数字の入力を促し、読み込む。 echo -n "$number : " echo -n "$number : " >quiz2.txt #入力した数字(素因数分解前)を実行結果として"quiz2.txt"に上書きする。 #以下、素因数を探し出す操作である。 #その方法は、問題の数字に素因数の候補値(変数aとする)を小さいものからしらみ潰しに #割り切れるか否かで試していく、というものである。 a=2 #素因数の最少候補値2を初期値に設定する。 while [ $number -ge $a ] #素因数の最大候補は問題の数字自身なので、その範囲でdo〜doneの操作を繰り返す。 do if [ `expr $number % $a` -eq 0 ] then number=`expr $number / $a` #もし問題の数がその候補値で割り切れるのなら #その商を問題の数に置き換え、ループの始めに戻す。 #このとき候補値はそのままなので、素数のみを候補として調べることができる。 #(例えば、8は候補値にならない。その前に2で3回割り算されるはずだから。) echo -n " $a" echo -n " $a" >>quiz2.txt #またその候補値は素因数といえるので随時それを"quiz2.txt"に書き足していく。 else a=`expr $a + 1` #一方割り切れない場合は候補値を次の(つまり1だけ大きい)ものに置き換え、ループの始めに戻す。 fi done