(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】factorコマンドにて素数の一覧を表示する

スポンサーリンク

はじめに

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

他にも色々とあるかと思いますが、自分用に利用したワンライナーを後続の方の役に立てればと残しておきます。
ご参考になれば幸いです。