素因数分解: 数を素数のかけ算に分解しよう
素因数分解は、ある数を素数だけのかけ算に分ける方法です。
数を「これ以上分けられない材料」に分解するイメージです。例えば 60 = 2 × 2 × 3 × 5 のように表せます。
使いどころ
- 約数の個数を調べる
- 最大公約数や最小公倍数を考える
- 数の性質を調べる
- 暗号やセキュリティの入口を学ぶ
手順
- 2から順番に割れるか試す
- 割れる間は何度も割る
- 割れなくなったら次の数を試す
- 最後に残った数が1より大きければ、それも素因数
図で見る
コピペ用コード
def factorize(n):
result = []
divisor = 2
while divisor * divisor <= n:
while n % divisor == 0:
result.append(divisor)
n //= divisor
divisor += 1
if n > 1:
result.append(n)
return result
print(factorize(60))
コードの読み方
while divisor * divisor <= nは、調べる範囲を減らす工夫です。while n % divisor == 0で、同じ素数で割れるだけ割ります。- 最後に
n > 1なら、大きな素数が残っています。
注意点
この方法は分かりやすい一方、とても大きな数では時間がかかります。まずは仕組みを理解するための基本形です。