410gone.click

©2021 sumomo-99

[Linux] 素因数分解を行う

更新日: 2021-04-11T08:20:37.651Z

Linux

factorコマンドは素因数分解を行います。

factor - factor numbers

factorコマンドはGNU Coreutilsに含まれています。ここでは、factorコマンドの基本的な使い方を紹介します。
※以降の実行例は、Ubuntu17.10で確認しています。

目次

  1. 基本的な使い方
  2. 実行例
  3. 2から100までの素数を求めてみる

1. 基本的な使い方

factor [number]...

numberが指定されていない場合は、標準入力から値を読み込みます。
復数のnumberを指定することもできます。

2. 実行例

$ factor 196
196: 2 2 7 7
$ factor 25 256 1934
25: 5 5
256: 2 2 2 2 2 2 2 2
1934: 2 967
$ echo 9 | factor
9: 3 3

コロン':'の後に、素因数分解の結果が表示されています。
 
値が素数の場合は、コロン':'の後に、入力した値だけが表示されます。

$ factor 13
13: 13

3. 2から100までの素数を求めてみる

2から100までの素数を求めてみます。 *出力結果は途中を省略しています。

$ for i in {2..100}; do factor $i | awk 'NF == 2 {print $2}'; done
2
3
5
[...]
89
97

bashfor文で2から100までループをさせます。ループの値をfactorコマンドの引数に与えて、素因数分解を行います。
値が素数の場合、スペース区切りでフィールドが2つ(値: 素数)になるので、awkコマンドでフィールドが2つのレコードだけ表示させます。
 
以下の例ではseqコマンドで2から100までの値を出力し、factorコマンドへ引き渡しています。この方法でも同様に素数だけ表示させることができます。

$ seq 2 100 | factor | awk 'NF == 2 {print $2}'

 
以上、素因数分解を行うfactorコマンドの紹介でした。