我已经很接近破解了,但是我看不到我所缺少的。是素数?如果输入的数字是质数,则应返回true;如果输入的数字不是质数,则应返回false。我创建的函数除了可以很好地工作之外,对于数字1不会返回false。作为规范的一部分,我被告知同时设置数字1和2,这是我尝试执行的操作,但似乎没有做任何东西。
(defn is-prime? [n]
(if (= n 1) false)
(if (= n 2) no-divisors?)
(no-divisors? n)
)
以下是is-prime的所有输入和预期结果的列表?唯一返回错误的值是(is-prime?1)。
(is-prime? 1)
=> false
(is-prime? 2)
=> true
(is-prime? 3)
=> true
(is-prime? 4)
=> false
(is-prime? 101)
=> true
答案 0 :(得分:1)
在clojure中,函数的结果是函数的最后一个表达式,因此在您的示例中,(if (= n 1) false)
和(if (= n 2) no-divisors?)
总是丢失,因为最后一个表达式是(no-divisors? n)
。
尝试一下:
(defn is-prime? [n]
(cond
(= n 1) false
(= n 2) true
:else (no-divisors? n)))