我正在使用Clojure执行以下任务-
Write a function named get-divisors which takes a number n as input and returns the all the numbers between 2 and √ inclusive
到目前为止,我已经有了这段代码,似乎可以按预期工作:
(defn get-divisors [n]
(str (range 2 (Math/sqrt n))))
用户插入并输入,代码应显示2到该特定数字的平方根之间的所有数字。 (我知道!get-divisors是该函数的可怕名称)
我输入(get-divisors 101)
,我得到以下输出
"(2 3 4 5 6 7 8 9 10)"
是正确的。
但是,问题是当我使用数字4
时得到nil或()
的结果,而实际上我应该得到2
。或者,当我输入49
时,我应该得到2
和7
之间的所有数字,但我只会得到2
和6
之间的所有数字。
我已经在线搜索了一些信息。我对Clojure并不陌生,但是与Java
,JavaScript
之类的东西相比,该编程的信息似乎很少。我读过另一个基于与我类似情况的线索,但是不幸的是,这些建议/答案对我没有用。
我将不胜感激。谢谢。
答案 0 :(得分:3)
请参阅the Clojure CheatSheet。 range
does not include the upper bound。因此,通常来说,您可能想要类似
(range 2 (inc n))
或者您的情况
(range 2 (inc (Math/floor (Math/sqrt n))))
还可以检出http://clojure.org