Clojure-包含范围

时间:2018-11-09 00:58:12

标签: clojure read-eval-print-loop

我正在使用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时,我应该得到27之间的所有数字,但我只会得到26之间的所有数字。

我已经在线搜索了一些信息。我对Clojure并不陌生,但是与JavaJavaScript之类的东西相比,该编程的信息似乎很少。我读过另一个基于与我类似情况的线索,但是不幸的是,这些建议/答案对我没有用。

我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

请参阅the Clojure CheatSheetrange does not include the upper bound。因此,通常来说,您可能想要类似

(range 2 (inc n)) 

或者您的情况

(range 2 (inc (Math/floor (Math/sqrt n))))

还可以检出http://clojure.org