素因数分解したい整数を入力してください。掛け算の形・指数の形・はしご算(すだれ算)の途中経過・約数の個数をまとめて表示します。
このページでできること
- 2以上の整数を入れるだけで、素因数分解の結果が「\(2 \times 2 \times 5 \times 5\)」のような掛け算の形でその場でわかります
- 日本の中学で習う指数の形(\(2^{2} \times 5^{2}\))と、はしご算(すだれ算)の途中経過も表示します
- 素因数分解の応用として、約数の個数もあわせて計算します
- 素数(それ以上分解できない数)を入れると「素数です」と判定するので、素数チェックにも使えます
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
\(\frac{84}{126}\) のような大きい分数も、素因数分解すれば機械的に約分できます。\(84 = 2^{2} \times 3 \times 7\)、\(126 = 2 \times 3^{2} \times 7\) なので、共通部分の \(2 \times 3 \times 7 = 42\) が最大公約数。両方を42で割れば \(\frac{2}{3}\) です。
約分・通分・最小公倍数の計算はすべて素因数分解が土台で、分数を扱うすべての計算の見通しがよくなります。
クレジットカード番号などを守るRSA暗号は、「大きい数の素因数分解は、コンピュータでもとほうもなく時間がかかる」ことを安全性の根拠にしています。実際、232桁の数(RSA-768)の素因数分解には、数百台のコンピュータを使って約2年かかりました。
100兆(15桁)程度の数ならコンピュータは一瞬で分解できるのに、桁数が増えると難しさが爆発的に増える――その非対称性が、インターネットの安全を支えています。
歯数12の歯車と歯数18の歯車がかみ合って最初の位置関係に戻るのは、\(12 = 2^{2} \times 3\) と \(18 = 2 \times 3^{2}\) の最小公倍数である36歯分が進んだとき(小さい歯車が3回転、大きい歯車が2回転したとき)です。
素因数分解は最小公倍数を確実に求める道具として、歯車の摩耗を均等にする設計や、複数の周期が揃うタイミングの計算に使われています。
36人の参加者を同じ人数のグループに分ける方法は何通りあるでしょうか。\(36 = 2^{2} \times 3^{2}\) から約数の個数は \((2+1) \times (2+1) = 9\) 個とわかるので、「1人×36組」から「36人×1組」まで9通りです。
班分け・タイル張り・商品の箱詰めなど、「きれいに割り切りたい」場面の選択肢を、書き出さずに数えられます。
北米には、13年または17年ごとに一斉に大発生するセミ(素数ゼミ)がいます。周期が素数だと他の周期と重なりにくく、例えば13年ゼミと12年周期の天敵が同時発生するのは、最小公倍数の156年に1回しかありません。
周期が素数であることが生存に有利に働いた、という仮説が有力と考えられています。素因数分解で「重なりにくさ」を計算すると、この仕組みを自分で確かめられます。
式
用語・記号の解説
記号
| \(n\) | エヌ | 素因数分解したいもとの整数(2以上)。(例:100) |
| \(p, q\) | ピー、キュー | 素因数(\(n\) を割り切る素数)。小さい順に並べて書きます。(例:100の素因数は 2 と 5) |
| \(p^{a}\) | ピーのエー乗 | 素因数 \(p\) を \(a\) 回掛け合わせた値。右上の小さい \(a\) は「\(a\) 回掛ける」という意味の指数です。(例:\(2^{2} = 2 \times 2 = 4\)) |
| \(d\) | ディー | 約数の個数。約数を意味する英語 divisor の頭文字です。(例:100なら \(d = 9\)) |
用語
| 素数 | そすう | 1とその数自身のほかに約数を持たない、2以上の整数。2, 3, 5, 7, 11, 13, …と続きます。1は素数に含めません。また2は唯一の偶数の素数です。 |
| 合成数 | ごうせいすう | 素数ではない2以上の整数。いいかえると、2つ以上の素数の掛け算で作れる数です(例:100 = 2 × 2 × 5 × 5)。 |
| 素因数 | そいんすう | ある整数を割り切る素数のこと。100の素因数は2と5です。 |
| 素因数分解 | そいんすうぶんかい | 整数を素数だけの掛け算の形に分解すること。分解の結果は掛け算の順序を除いてただ1通りに決まります。 |
| 約数 | やくすう | その数を割り切ることができる整数。12の約数は 1, 2, 3, 4, 6, 12 の6個です。 |
| 指数 | しすう | 右上に小さく書く「何回掛けるか」の数。\(2^{3}\) は2を3回掛ける(\(2 \times 2 \times 2 = 8\))という意味です。 |
| 算術の基本定理 | さんじゅつのきほんていり | 2以上のどんな整数も、素数の掛け算としてただ1通りに表せる、という定理。素因数分解の答えが1つに決まる根拠です。 |
| はしご算 (すだれ算) |
はしござん・すだれざん | 小さい素数で次々に割っていく筆算のやり方。左に割る素数、下に商を書き、商が素数になったら終わりです。左に並んだ素数と最後の商を全部掛けると、もとの数に戻ります。 |
| 試し割り法 | ためしわりほう | 2, 3, 5, …と小さい素数から順に「割り切れるか」を試していく素因数分解のやり方。\(\sqrt{n}\) まで試して割り切れなければ、残った数は素数だと判定できます。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 九九(小学2年)・割り算(小学3年) |
|
| 偶数・奇数、約数と倍数(小学5年) |
|
| 素数と素因数分解(中学1年) |
|
| 累乗・指数(中学1年) |
|
Excelで計算する方法
| 素因数1 | 2 |
| 素因数2 | 2 |
| 素因数3 | 5 |
| 素因数4 | 5 |
| もとの整数 n | =B1*B2*B3*B4 |
| 素因数 p | 2 |
| pの指数 a | 2 |
| 素因数 q | 5 |
| qの指数 b | 2 |
| もとの整数 n | =B1^B2*B3^B4 |
| pの指数 a | 2 |
| qの指数 b | 2 |
| 約数の個数 d | =(B1+1)*(B2+1) |
1つ目の表は、素因数を全部掛けるともとの数に戻ることの確認です。B5に 2 × 2 × 5 × 5 = 100 と表示されます。
2つ目の表は指数の形(2² × 5²)からの計算で、「^」がべき乗(何回掛ける)の記号です。B5に100と表示されます。
3つ目の表は約数の個数で、B3に (2+1) × (2+1) = 9 と表示されます。素因数や指数の数値を自分の結果に書き換えるだけで使えます。
Googleスプレッドシートで計算する方法
| 素因数1 | 2 |
| 素因数2 | 2 |
| 素因数3 | 5 |
| 素因数4 | 5 |
| もとの整数 n | =B1*B2*B3*B4 |
| 素因数 p | 2 |
| pの指数 a | 2 |
| 素因数 q | 5 |
| qの指数 b | 2 |
| もとの整数 n | =B1^B2*B3^B4 |
| pの指数 a | 2 |
| qの指数 b | 2 |
| 約数の個数 d | =(B1+1)*(B2+1) |
Pythonで計算する方法
number = 100 # 素因数分解したい整数(2以上)
prime_factors = [] # 素因数を小さい順に入れるリスト
remaining = number
divisor = 2
while divisor * divisor <= remaining:
while remaining % divisor == 0: # 割り切れる間は同じ数で割り続ける
prime_factors.append(divisor)
remaining //= divisor
divisor += 1
if remaining > 1: # 最後に残った1より大きい数は素数
prime_factors.append(remaining)
print(f"{number} の素因数: {prime_factors}")
数式記述言語(LaTeX等)での書き方(コピペ可)
n = p₁ × p₂ × ⋯ × pₖ
n = p_1 \times p_2 \times \cdots \times p_k
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi>
<mo>=</mo>
<msub><mi>p</mi><mn>1</mn></msub>
<mo>×</mo>
<msub><mi>p</mi><mn>2</mn></msub>
<mo>×</mo>
<mo>⋯</mo>
<mo>×</mo>
<msub><mi>p</mi><mi>k</mi></msub>
</mrow>
</math>
n = p_1 xx p_2 xx cdots xx p_k
FactorInteger[n]
ifactor(n);
factor(n)
n = p_1 × p_2 × ⋯ × p_k
n = pᵃ × qᵇ × ⋯
n = p^{a} \times q^{b} \times \cdots
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi>
<mo>=</mo>
<msup><mi>p</mi><mi>a</mi></msup>
<mo>×</mo>
<msup><mi>q</mi><mi>b</mi></msup>
<mo>×</mo>
<mo>⋯</mo>
</mrow>
</math>
n = p^a xx q^b xx cdots
p^a * q^b
n := p^a * q^b;
n = p^a * q^b;
n = p^a × q^b × ⋯
d = (a + 1) × (b + 1)
d = (a+1) \times (b+1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>d</mi>
<mo>=</mo>
<mo>(</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo>
<mo>×</mo>
<mo>(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo>)</mo>
</mrow>
</math>
d = (a + 1) xx (b + 1)
(a + 1)*(b + 1)
d := (a + 1)*(b + 1);
d = (a + 1)*(b + 1);
d = (a + 1) × (b + 1)
ChatGPT に聞いて計算してもらう方法
あなたは整数計算のアシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 360 を素因数分解してください。 1. 素因数を小さい順にすべて列挙してください(同じ素因数は個数分くり返して書く) 2. 指数を使った形で書いてください(例:2^3 × 3^2 × 5 のような形) 3. 360 の約数の個数も求めてください 計算に使ったコードと、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの計算(はしご算)を、自分の手でできるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
