;;; Determina se um numero eh primo (defun is-prime (n) (and (> n 1) (null (proper-divisors n)) ) ) ;;; Retorna uma lista com os divisores proprios de N ;;; Divisores proprios: sao os divisores diferentes de 1 e N (defun proper-divisors (n) (proper-divisors-up-to n (floor n 2)) ) ;;; Retorna uma lista com os divisores proprios de N ;;; que nao excedam M (defun proper-divisors-up-to (n m) (cond ((<= m 1) ()) ((= 0 (mod n m)) (cons m (proper-divisors-up-to n (1- m)))) (t (proper-divisors-up-to n (1- m))) ) )