Функция Prime-seq не печатает наибольшее число в диапазоне между 2 входами, когда он прост и должен быть напечатан. Кроме того, выполнение print-top-primes, поскольку это также не будет печатать наибольшее число в диапазоне, если оно простое. Не уверенный, как включить это число, я думаю, что проблема в функции prime-seq, и print-top-primes испытывает ту же проблему, потому что это делает вызов Prime-seq. Любая помощь будет принята с благодарностью.
Я изменил значения в: let of prime-seq, попытался добавить инклюзивный синтаксис, который я нашел в Интернете, но он либо ничего не сделал, либо вернул ошибку, поэтому я удалил ее.
(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 ".