〜2016年7月中旬〜
やはり繰り返しはjqを使うと楽だ。
% seq 20 | while read n;do printf '%0*d1\n' $n;done | tr 0 3 | factor | awk -M '$0*=!$3' 31 331 3331 33331 333331 3333331 33333331 333333333333333331 % seq 20 | jq -r '"3"*.+"1"' | factor | awk -M '$0*=!$3' 31 331 3331 33331 333331 3333331 33333331 333333333333333331
jq 1.5だと正規表現対応しているので素数判定に使える。
% seq 2 100 | jq 'select("0"*.|test("^(00+?)\\1+$")|not)' 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
桁数が増えると処理時間も増える。
% echo 100000000 | /usr/bin/time -f %E jq 'select("0"*.|test("^(00+?)\\1+$")|not)' 0:10.16
やっぱ素数にはfactorだな。
馬鹿正直に自分より小さい整数で割った余りから素数かどうか判断する方法。
% seq 2 100 | jq 'select([.%range(2;.)>0]|all)' 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
どう考えても遅い。
WORKDIRを設定する前にディレクトリを作っておく必要はない。
CPも同様でディレクトリが存在しなければ勝手に作ってくれる。