如何显示前N个自然数,知道Lisp中的除数

如何显示前N个自然数,知道Lisp中的除数,lisp,common-lisp,hamming-numbers,smooth-numbers,Lisp,Common Lisp,Hamming Numbers,Smooth Numbers,首先显示自然数,其除数仅为2、3和7。 我写过类似的东西。我是Lisp的初学者。谢谢大家! defvar x 1 (defun numbers(n) if(mod x 2 ) (loop for x from 1 to n do(print x) ) ) print(numbers()) 因为我刚刚有时间,你可以看看这个。可能不是完美的解决方案,但对于初学者来说应该是一个很好的起点。查看“信息”选项卡中的书籍,了解语法等 (defun divisible-by

首先显示自然数,其除数仅为2、3和7。 我写过类似的东西。我是Lisp的初学者。谢谢大家!

defvar x 1
(defun numbers(n)
    if(mod x 2 )
    (loop for x from 1 to n
    do(print x)
    )
)
print(numbers())

因为我刚刚有时间,你可以看看这个。可能不是完美的解决方案,但对于初学者来说应该是一个很好的起点。查看“信息”选项卡中的书籍,了解语法等

(defun divisible-by (n m)
   "Returns T if N is evenly divisible by M."
   (zerop (mod n m)))

(defun numbers (n)
   "Print all number upto N which are divisible by 2, 3 and 7."
    (loop
       for i from 1 upto N
       if (and (divisible-by i 2) (divisible-by i 3) (divisible-by i 7))
         do (format t "~D~%" i)))

你应该检查你的语法。您的代码不是有效的lisp代码,例如,if语句周围缺少括号。从一个循环开始,该循环将所有数字打印到
N
。然后检查哪些可以被2整除,只打印它们,然后加上3和7。好的,谢谢你,马丁!在语法方面:建议对Lisp使用某种IDE。您可以查看(为公共Lisp开发配置的Emacs),它对初学者非常友好,就像您可以获得imo一样。您可以找到一些命令式伪代码,例如,在。:)的顶部(我重新标记了这个问题)。此外,三个整除性测试可以用一个检查来代替
gcd
,其中42大于1.)