素因数分解のやり方(すだれ算)
素数とは、1 とその数自身でしか割り切れない 1 より大きい整数のことです。2、3、5、7、11 は素数で、1 は素数ではありません。1 より大きい整数は、素数であるか、素数のかけ算でただ一通りに表せるかのどちらかです。これを素因数分解といいます。
学校では「すだれ算(はしご算)」で計算します。割り切れるいちばん小さい素数で割り、商を下に書いて、商が 1 になるまで同じことを繰り返します。左側に並んだ素数をかけ合わせたものが答えです。
この計算機の「割り算の手順」の表は、このすだれ算を一段ずつ表にしたものです。「割られる数」を「割る素数」で割ると「商」になり、その商が次の行の「割られる数」になります。
例:360 を素因数分解する
360 は偶数なので 2 で割ります。360 ÷ 2 = 180、180 ÷ 2 = 90、90 ÷ 2 = 45。45 は奇数なので、もう 2 では割り切れません。
次に 3 で割ります。45 ÷ 3 = 15、15 ÷ 3 = 5。最後に 5 は素数なので 5 ÷ 5 = 1 となり、ここで終わりです。
使った素数は 2、2、2、3、3、5 なので、360 = 2³ × 3² × 5 です。
素因数分解が使われる場面
最大公約数:2 つの数に共通する素因数を、指数の小さいほうでかけ合わせます。最小公倍数:どちらかに出てくる素因数を、指数の大きいほうでかけ合わせます。
分数の約分や平方根の簡単化にも使います。たとえば 360 = 2² × 3² × 10 なので、√360 = 6√10 です。
約数の個数は、各指数に 1 を足してかけ合わせると求められます。360 なら 4 × 3 × 2 = 24 個です。
0・1・負の数・小数の扱い
1 は素数でも合成数でもなく、素因数をもちません。0 はどの素数でも割り切れるため、素因数分解は一通りに決まりません。
負の数は −1 × (絶対値の素因数分解)の形で表示します。−1 は符号を表すためのもので、素数ではありません。
2.5 のような小数は整数ではないので、素因数分解の対象になりません。その場合は、整数を入力するよう案内を表示します。
計算のしくみ
まず 2 と 3 で割れるだけ割ります。そのあとは、6 の倍数の前後の数(6k − 1 と 6k + 1)だけを試します。5 以上の素数は必ずこの形になるからです。
割る数の 2 乗が残りの数より大きくなったら、そこで止めます。平方根までに割り切れる数がなければ、残りは素数だからです。そのため大きな数でもほとんど一瞬で計算できますが、大きな素数や、大きな素数 2 つの積だけは少し時間がかかります。
計算はすべてブラウザ上で行われ、入力した数がサーバーに送られることはありません。
約数の一覧が表示されないとき
正の約数の個数が 120 個以下のときは、すべての約数を一覧で表示します。高度合成数のように約数が非常に多い数では、一覧が数百・数千個になり画面で見るには向かないため、その場合は個数だけを表示し、一覧は省略します。
よくある間違いと、この計算機でできないこと
よくある間違いは、1 を素数だと思い込むことです。素数は約数がちょうど2つ(1とその数自身)ですが、1 の約数は1つしかありません。もう1つは、指数を「かけ算する回数」ではなく「別の因数」と勘違いすることです。2³ は 2 × 2 × 2 = 8 という意味で、2 と 3 という別の数ではありません。1024 = 2¹⁰ のように、割り算の回数(10回)と異なる素因数の種類の数(1種類)を混同しないよう注意してください。また、大きな数はいつも計算に時間がかかると思われがちですが、9,007,199,254,740,991 のように小さな素因数の積でできている数はすぐに終わり、逆に大きな素数どうしの積は平方根までのすべての候補を試す必要があるため時間がかかります。
この計算機が受け付けるのは 9,007,199,254,740,991 までの整数だけです。これより大きい数はブラウザ内で正確に扱えなくなるため、間違った答えを出すくらいなら入力を拒否するようにしています。使っている試し割り法は確実な方法ですが、非常に大きな2つの素数の積を分解するのには向いておらず、そうした数がいちばん時間がかかります。