LoginSignup
9
3

More than 5 years have passed since last update.

[Python]試し割法で素因数分解する

Last updated at Posted at 2019-02-05

きっかけ

前回、素数を求めるプログラムを書いている時に、素因数分解を解きたくなったからです。

動作環境

Windows10 Pro
Python3.6.2

素因数分解する

試し割り法を用いて素因数分解したいと思います。
試し割り法 - Wikipedia
簡単に処理の流れを説明

素因数分解したい数字をNとする
①2から√Nまでの数字を一つずつ取り出す
②Nを取り出した数字(以下numとする)で割り切れなくなるまで割る
③割り切れたら素因数リストにnumを追加していく
④割り切れなくなったら次の数字を取り出す

trial_division.py
import math
#試し割法
def trial_division(n):
    #素因数を格納するリスト
    factor = []
    #2から√n以下の数字で割っていく
    tmp = int(math.sqrt(n)) + 1
    for num in range(2,tmp):
        while n % num == 0:
            n //= num
            factor.append(num)
    #リストが空ならそれは素数
    if not factor:
        return 'prime number'
    else:
        factor.append(n)
        return factor

def main():
    number = int(input("素因数分解したい数字を入力してください:"))
    print(trial_division(number))

if __name__ == "__main__":
    main()

実行結果

PS C:\Python\math> python .\trial_division.py
素因数分解したい数字を入力してください:100
[2, 2, 5, 5, 1]

行けてますね

今回はこれで終わりたいと思います。
ありがとうございました。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3