素因数分解を突然やってみた

なんとなくおしっこしながら
素因数分解って俺、どうやってたの?」
と唐突に思いました。


まさか小さい素数から順に割り算していったわけじゃないよね?
とか思ったんですが、それ以外の方法が思いあたらなくて凹んだので
とりあえず何も調べずに自分で書いてみました。

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

def isSosu(value):
    if value < 2:
        return True
    for i in xrange(2,value):
        if value % i == 0:
            return False
    return True

def getSoinsu(value):
    result = []
    i = 2
    while True:
        if value % i == 0 and isSosu(i):
            result.append(i)
            value = value / i
            if isSosu(value):
                result.append(value)
                return result
        else:
            i += 1

if __name__ == "__main__":
    print getSoinsu(6)
    print getSoinsu(360)
    print getSoinsu(75143)

本当に何も調べなかったので
僕の味方であるExite翻訳も開けずに関数名とか
すごくかっこ悪くてごめんなしあ><


で、答えあわせをしようと思って「どう書く」を見にいったんだけど
そんな問題がありませんでした><


でも、ここで色々みつけました。
http://www.asahi-net.or.jp/~kc2h-msm/mathland/math12/index.htm


とりあえずちゃんとアルゴリズムを勉強しなきゃ駄目だなぁと思ったので
id:tfunato
「Javaによるアルゴリズム事典」のアルゴリズムをPythonで実装してみる
をやってみようと思います。