[問題] recursive找質數

看板Python作者時間10年前 (2013/10/05 23:02), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
程式碼: car=lambda lst:lst[0] cdr=lambda lst:lst[1:] def prime(num,pr,pri): if num == []: return pri elif pr == []: return prime([cdr(num)],pri + [car(num)],pri + [car(num)]) elif (car(num)% car(pr) == 0): return prime([cdr(num)],pri,pri) elif (car(num)% car(pr) != 0): return prime(num,[cdr(pr)],pri) 舉例: 我代num=[3,4,5,6] pr=pri=[2] 我想找3~6中的質數 但出現錯誤: Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> prime(num,pr,pri) File "C:\Users\user\Desktop\prime.py", line 12, in prime return prime(num,[cdr(pr)],pri) File "C:\Users\user\Desktop\prime.py", line 9, in prime elif (car(num)% car(pr) == 0): TypeError: unsupported operand type(s) for %: 'int' and 'list' 是我哪裡有問題嗎? 還有質數可以這樣找吧?? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.68.248

10/05 23:28, , 1F
可以先給出 Scheme (/ LISP / Racket) 程式嗎?
10/05 23:28, 1F

10/06 02:34, , 2F
cdr 已經回傳 list,不需要用括號,通通去掉吧。
10/06 02:34, 2F

10/07 00:25, , 3F
最後一行不是寫了,不能把int和list相加啊
10/07 00:25, 3F
文章代碼(AID): #1IK2drr- (Python)