思いたったのでやってみる

Javaによるアルゴリズム事典

Javaによるアルゴリズム事典

の P.178 の素因数分解をやってみた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def factorize(x):
    print str(x) + ' = ',
    while x >= 4 and x % 2 ==0 :
        print "2 * " ,
        x /=2
    
    i = 3
    while i * i < x :
        if x % i != 0:
            i+=2
        else:
            print str(i) + " * ",
            x /= i
    print x


if __name__ == "__main__":
    factorize(6)
    factorize(360)
    factorize(75143)

僕が自力でやったのとの違いは

  • x が 4 以上だったら 2 で割りきれなくなるまで割る
  • その後は 3 以上の素数はすべて奇数なので +2 で奇数で割っていく
  • 関数名が英語でカッコイイ

といった感じでしょうか?


とりあえず 2 づつ加算していくのは
目から鱗でした><