Clojure包含范围? prime-seq打印顶部质数

时间:2019-01-13 15:40:30

标签: clojure

Prime-seq函数在为素数且应打印时,不会在2个输入之间的范围内打印最大数。同样,如果使用top-prim-primes进行打印,则也不会打印范围中最大的数字。不确定如何包括此数字,我认为问题出在prime-seq函数中,而print-top-primes遇到同样的问题,因为它调用了prime-seq。任何帮助将不胜感激。

我已经更改了prime-seq的:let中的值,尝试添加我在网上找到的包含性语法,但是它什么都不做或返回错误,所以我将其删除。

(defn prime-seq [from to]
        (for [i (range from to)
          :let [y (+ i 0)]
          :when (is-prime? i)]
        y))

(defn print-top-primes [from to]
  (doseq [i (take 10 (reverse (prime-seq from to)))]
    (println i))
  (printf "Total = %d\n" (reduce + (prime-seq from to))))

使用输入(prime-seq 7 11),预期输出应为“ 7 11”,但我得到的是“ 7”。

使用输入:(print-top-primes 50 103),我希望输出是“ 103、101、97、89、83、79、73、71、67”,但我得到的输出是“ 101,97,89,83,79,73,71,67,61“。

1 个答案:

答案 0 :(得分:1)

由于range#region参数不包含在内。从文档中:

  

从开始(包括)到结束(不包括)返回num的懒惰序列。

使用之前,您可以使用inc来简单地增加end

end