MCPで接続 →

計算を入力してください

整数を入力すると、その約数と素因数を計算します。

公式

広告

結果

30 has 8 factors

  1. 約数:
    1, 2, 3, 5, 6, 10, 15, 30
  2. 素因数:
    30 = 2 × 3 × 5

約数計算ツールでできること

この約数計算ツールに整数を1つ入力すると、その数の「すべての約数」と「素因数分解」の2つを瞬時に表示します。約数とは、その数を割り切る(余りが出ない)整数のことです。一方、素因数とは、掛け合わせると元の数になる素数の「部品」のことです。宿題や分数の約分、最大公約数を求めるとき、さらには数の性質を調べる場面で役立ちます。

12が約数の組に分かれ、点の長方形として並べられた様子
12の約数を、掛け合わせて12になる約数の組として示したもの。

使い方

入力欄は「約数を求める数:」の1つだけです。整数(正でも負でも可)を入力すれば、あとは自動で計算されます。計算は絶対値に対して行われるため、表示される約数は常に正の数です。対応範囲は 2,147,483,647 未満の整数で、この上限以上の値は処理されません。

  • 0 は特別なケースとして扱われ、0 を返します。
  • 負の数はその絶対値で計算されます(例:-12 は 12 と同じ約数になります)。

計算の仕組み

このツールは入力値まで1つずつ調べるのではなく、1 からその数の平方根までだけをループします。割り切れる値 i ごとに、i とその相方となる商(数 ÷ i)の両方を記録します。この平方根法では約数をペアで見つけられるため、大きな数でもはるかに高速です。結果は重複を取り除き、昇順に並べ替えられます。素因数分解には、実績のある素数処理ライブラリ(Apache Commons Math)を用いて、絶対値を素数の構成要素へ分解します。割り切れる正の整数 \(d\) の集合は次のように表せます。

$$\text{Factors} = \left\{\, d \in \mathbb{Z}^{+} : \left|\text{Number}\right| \bmod d = 0 \,\right\}$$

広告
余りが0の割り算でdが約数であることを示す図
正の整数dは、その数をdで割った余りが0のとき約数となる。

計算例

36 を入力してみましょう。ループは 1 から 7(\(\sqrt{36} = 6\) の少し上)まで動きます。

  • 1 は 36 を割り切る → 1 と 36 を記録
  • 2 は 36 を割り切る → 2 と 18 を記録
  • 3 は 36 を割り切る → 3 と 12 を記録
  • 4 は 36 を割り切る → 4 と 9 を記録
  • 6 は 36 を割り切る → 6 を記録(相方も 6 なので1回だけ)

並べ替えると、約数は 1, 2, 3, 4, 6, 9, 12, 18, 36 です。素因数は 2, 2, 3, 3 です(\(2 \times 2 \times 3 \times 3 = 36\) だから)。

よくある質問

約数と素因数は何が違うのですか? 約数とは、入力した数を割り切るすべての数のことです。一方、素因数とは、掛け合わせてその数を作り出す素数だけを指します。36 の場合、約数には 12 や 18 のような合成数も含まれますが、素因数は 2, 2, 3, 3 だけです。

なぜ負の数でも正の約数が出るのですか? 計算は絶対値で行われるため、-12 と 12 は同じ正の約数のリストになります。

入力できる数に上限はありますか? はい。数は 2,147,483,647 未満(負の側はその負数より大きい範囲)である必要があります。この上限以上の値は結果を返しません。

最終更新: