p-seq
:接收两个整数参数,“from”和“to”,此方法应该返回一个序列,其中只包含{from}和“to”之间is-p
函数给出的数字。我写的当前代码只打印出“from”和“to”之间的所有数字。我想要p-seq来返回一个序列。
is-p
:如果数字是素数,则检查并返回true,否则返回false。
(defn p-seq [from to]
(loop [count from]
(if (> count to)
(println "")
(do
(def seqf (is-p count))
(if(= seqf true)
(print count " ")
)
(recur (inc count))))))
任何帮助表示赞赏。谢谢。
答案 0 :(得分:1)
由于您拥有谓词函数is-prime?
,因此您只需使用它来过滤from
和{{1}之间所有数字的范围 }}:
to
注意(filter is-prime? (range 100 200))
=> (101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199)
的上限参数是独占的。
答案 1 :(得分:1)
您只需在序列上使用range
函数,就会对每个元素应用过滤器
给定filter
函数检查素数,
is-p
所以,你的user=> (filter is-p (range 1 20))
(2 3 5 7 11 13 17 19)
函数看起来像,
p-seq