2012年9月29日土曜日

ProjectEuler0003 on clojure


えっとおわりました

最初からある程度溶けそうだったんだけど

mod 6002156... 0とかしてて詰んでた

0で割ると例外起きるのにね!

Lingrのみんなで頭ひねってて

少し時間してからひらめいた

で、

(defn PMax [x] (/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))

とかしてxに入れてやってみたんですけど これじゃとけない

素因数じゃなかったんですね

で、再起処理書いたんですがうまくいかないので

手動再起処理してやりましたwwwwwwwwww

まああんまり回数もしそうになかったんで

いか、前回と同じように貼りますね


; SLIME
user> (defn PMax [x] (/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))
#'user/PMax
user> (PMax 256)
128
user> (PMax 1)

nil
user> (PMax 2)

nil
user> (defn PMax [x] (if (< x 3) (0) ((/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))))
 (defn PMax [x] (if (< x 3) (0) ((/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))))
#'user/PMax
user> (defn PMax [x] (if (< x 3) (0) ((/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))))
#'user/PMax
user> (defn PSMax [x] (let [y (PMax x)] (if (= y 0) x (PSMax y))))
#'user/PSMax
user> (PSMax 600851475143)

nil
user> (PMax 600851475143)

nil
user> (defn PMax [x] (/ x (first (filter (fn [y] (= (mod x y) 0)) (range 2 (/ x 2))))))
#'user/PMax
user> (PMax 600851475143)
8462696833
user> (PMax 8462696833)
10086647
user> (PMax 10086647)
6857
user> (PMax 6857)


ここでエラーが出たので

よって答えは 6857です

あー眠w

寝ます!

おやすみ!

0 件のコメント:

コメントを投稿