はじめに
factorコマンドは引数に指定した数値を素因数分解するコマンドです。
$ factor 2020 2020: 2 2 5 101
本記事ではこちらを利用して素数一覧を出すワンライナーを紹介します。
素数の一覧を表示するワンライナー
以下です。
$ seq 2 30 | factor | cut -d" " -f2 | sort -nu 2 3 5 7 11 13 17 19 23 29
seqは2から始め、二つ目の引数が30の上限です。
以下、解説です。
解説
seqコマンドにて以下のように数値を出力し
$ seq 2 10 2 3 4 5 6 7 8 9 10
それをfactorに読ませることで素因数分解をします。
$ seq 2 10 | factor 2: 2 3: 3 4: 2 2 5: 5 6: 2 3 7: 7 8: 2 2 2 9: 3 3 10: 2 5
この結果の2列目の数値を取得し
$ seq 2 10 | factor | cut -d" " -f2 2 3 2 5 2 7 2 3 2
重複しているものをまとめれば完成です。
$ seq 2 10 | factor | cut -d" " -f2 | sort -nu 2 3 5 7
終わりに
ちなみに実行時間はかなり遅いのでご注意ください。
time seq 2 1000000 | factor | cut -d" " -f2 | sort -nu
real 0m5.206s user 0m0.900s sys 0m0.344s
他にも色々とあるかと思いますが、自分用に利用したワンライナーを後続の方の役に立てればと残しておきます。
ご参考になれば幸いです。