【发布时间】:2019-01-13 15:40:30
【问题描述】:
当它是素数并且应该打印时,Prime-seq 函数不打印 2 个输入之间范围内的最大数字。此外,如果它是素数,则影响打印顶部素数也不会打印范围内的最大数字。不确定如何包含这个数字,我认为问题出在 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"。
【问题讨论】:
-
我使用了足够的包含范围,因此我在 Tupelo Clojure 库中添加了一个函数
thru:cloojure.github.io/doc/tupelo/tupelo.core.html#var-thru
标签: clojure