Как написать делители числа 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д