Список простых чисел в диапазоне приводит к сообщению об ошибке в Clojure - PullRequest
0 голосов
/ 13 января 2019

Я так близок к тому, чтобы это взломать, но я не вижу, что мне не хватает. является премьер? должен возвращать true, если введенное число является простым числом, или он должен возвращать false, если число не является простым. Созданная мною функция прекрасно работает, за исключением того, что она не будет возвращать false для числа 1. Как часть спецификации, мне сказали установить оба числа 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

1 Ответ

0 голосов
/ 13 января 2019

В 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...