我对 LISP 非常陌生,并且正在解决一些初学者问题。我尝试定义 ISPRIME 函数,但它似乎无法正常工作。这是我的代码:
(defun ISPRIME (n &optional (d (- n 1)))
(if (= d 0)
( return-from ISPRIME t ))
(if (= (mod n d) 0)
( return-from ISPRIME nil ))
(ISPRIME n (- d 1)))
但是在运行我的代码时,我以值 5 为例:
(ISPRIME 5)
Nil
5 应该是质数。我怀疑一切都落入了: (if (= (mod nd) 0) 语句不应该出现的情况。d 应该继续递减直到达到 0 并返回 true,但事实并非如此。我似乎无法看看我的逻辑错误发生在哪里。
非常感谢任何和所有帮助!