Clojure - Включая ассортимент - PullRequest
0 голосов
/ 09 ноября 2018

Я использую 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.Я прочитал другую ветку, которая основывалась на сходной ситуации, но предложения / ответы, к сожалению, не сработали.

Буду признателен за любую помощь.Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

См. Шпаргалку Clojure . range не включает верхнюю границу . Итак, в общем, вы, вероятно, хотите что-то вроде

(range 2 (inc n)) 

или в вашем случае

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

Также проверьте http://clojure.org

...