如何在clojure中预测为真时返回相应的数字

Xiu*_* Xu 2 clojure

我想返回一个数字的因子,这些因素应该在给定的范围内.喜欢:

user=> (factors (range 1 10) 12)
(1 2 3 4 6)
Run Code Online (Sandbox Code Playgroud)

我写了一些代码,但它们返回true或false.我的代码是:

(defn factors [range num]
   (map #(= (mod num %) 0) range))
Run Code Online (Sandbox Code Playgroud)

测试结果:

user=> (factors (range 1 10) 12) 
(true true true true false true false false false)
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得数字(1 2 3 4 6)而不是真实和错误?非常感谢!

Sam*_*tep 8

用途filter:

(defn factors [candidates num]
  (filter #(zero? (mod num %)) candidates))
Run Code Online (Sandbox Code Playgroud)

例:

(factors (range 1 10) 12)
;=> (1 2 3 4 6)
Run Code Online (Sandbox Code Playgroud)