素因数分解を突然やってみた
なんとなくおしっこしながら
「素因数分解って俺、どうやってたの?」
と唐突に思いました。
まさか小さい素数から順に割り算していったわけじゃないよね?
とか思ったんですが、それ以外の方法が思いあたらなくて凹んだので
とりあえず何も調べずに自分で書いてみました。
#!/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で実装してみる
をやってみようと思います。