gpt4 book ai didi

java - Common Lisp 中的嵌套循环

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:40 26 4
gpt4 key购买 nike

是否可以在 common lisp 中使用嵌套循环?我正在尝试将我的 java 代码转换为普通的 lisp。我正在使用 Steel Bank Common Lisp

这是我要转换的内容

for(i=1; i<=59; i++){
k=1;
for(j=2; j<i; j++)
if(i % (j*j) == 0)
k=0;
if(k != 0)
System.out.println(i);
}

最佳答案

所以我查看了您的 Algol 代码,并认为您可以使用嵌套循环来实现它,但我永远不会像那样创建 algol 代码,因为即使您已经命中一个立方体,您仍在迭代 j

for(i=1; i<=59; i++){
var k=1;
for(j=2; j<i; j++) {
if(i % (j*j) == 0) {
k=0;
break;
}
}
if( k )
System.out.println(i);
}

我保留了 k 因为 Algol 不能像 Lisp 那样嵌套。在 Lisp 中,您可以在 if 中使用内部循环,这样就不需要 boolean 变量了。我把这份工作分成两个职能。一种生成从 1 到 max-num 的数字到列表中,另一种从列表中生成所需的输出字符串。两者都可以通过单元测试进行测试。最后一条语句有副作用,因为它确实在返回结果之前打印了结果。

(defun generate-list (max-num)
"generates a list of numbers from 1 to max-num
that which is not dividable by any cube of a lower
number greater than 1"
(loop :for i :from 1 :upto max-num
:if (not (loop :for j :from 2 :to i
:if (zerop (mod i (* j j)))
:do (return t))) ; inner loop terminates early :-)
:collect i))

(defun elements-to-string (list)
"Makes a string with all elements
of a list on individual lines"
(format nil "~{~a~^~%~}" list))

(princ (elements-to-string (generate-list 59)))

关于java - Common Lisp 中的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29036097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com