Как написать делители числа 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).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы