Как написать делители числа n? - Lisp
Формулировка задачи:
Как написать делители числа n?
Решение задачи: «Как написать делители числа n?»
textual
Листинг программы
- (defun divisors (n &optional (m (truncate (/ n 2))))
- (when (plusp m) (if (zerop (rem n m))
- (cons m (divisors n (1- m)))
- (divisors n (1- m)))))
- > (divisors 100)
- (50 25 20 10 5 4 2 1)
- > (divisors 99)
- (33 11 9 3 1)
Объяснение кода листинга программы
В коде определённая функция divisors
для вычисления всех делителей числа n
.
Если число m
больше или равно n
, то возвращается список делителей n
,
Если число m
меньше n
, то рекурсивно вызывается функция divisors
для вычисления делителей числа n
с новым значением m
равным m-1
.
Если число m
равно n
, то возвращается пустой список.
Для вычисления делителей числа 100 получается список (50,25,20,10,5,4,2,1), для числа 99 - (33,11,9,3,1).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д