(defn factors [x] (if (== x 1) '() (let [f (first (filter (fn [e] (zero? (mod x e))) (range 2 (+ x 1)) ) )] (conj (factors (/ x f)) f) ) ) )