【发布时间】:2021-06-11 11:19:03
【问题描述】:
有人可以在这里指出我的错误。我正在尝试检查一个数字是否是质数。 它在一定程度上有效,但我有一个语义错误。例如,它告诉我 9 是质数,但同时它告诉我 4 和 6 不是质数,我很困惑。
(defvar *prime* nil)
(defun primeCheck (x y)
(if (and (>= x y) (not (= (mod x y) 0)))
(progn
(setf y (+ y 1))
(primeCheck x y)
(setf *prime* 'yes))
(setf *prime* 'no))
)
(primeCheck 9 2)
(if (equal *prime* 'yes) (print "Number is prime") (print "Number is not prime"))
【问题讨论】:
-
嗨 Jeff,很高兴看到有人新学习 CL,但您应该查看 SO
common-lisp标签的信息选项卡中给出的一些参考资料以了解例如全局变量的使用。对于您关于素数检查的特殊问题,您可以在此处找到算法:https://rosettacode.org/wiki/Sieve_of_Eratosthenes#Common_Lisp。
标签: functional-programming lisp common-lisp clisp