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“。