Как отобразить первые N натуральных чисел, зная делители в Лиспе - PullRequest
2 голосов
/ 05 октября 2019

Показать сначала N натуральных чисел, делителями которых являются только 2, 3 и 7. Я написал что-то подобное. Я новичок в Лиспе. Спасибо!

defvar x 1
(defun numbers(n)
    if(mod x 2 )
    (loop for x from 1 to n
    do(print x)
    )
)
print(numbers())

1 Ответ

3 голосов
/ 05 октября 2019

Поскольку у меня было немного времени, вы могли бы взглянуть на это. Не может быть идеальным решением, но должно быть хорошей отправной точкой для начинающих. Проверьте книги на вкладке информации, чтобы разобраться в синтаксисе и т. Д.

(defun divisible-by (n m)
   "Returns T if N is evenly divisible by M."
   (zerop (mod n m)))

(defun numbers (n)
   "Print all number upto N which are divisible by 2, 3 and 7."
    (loop
       for i from 1 upto N
       if (and (divisible-by i 2) (divisible-by i 3) (divisible-by i 7))
         do (format t "~D~%" i)))
...