作者romotting ()
看板Python
標題[問題] recursive找質數
時間Sat Oct 5 23:02:10 2013
程式碼:
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
→ suhorng:可以先給出 Scheme (/ LISP / Racket) 程式嗎? 10/05 23:28
推 ck574b027:cdr 已經回傳 list,不需要用括號,通通去掉吧。 10/06 02:34
推 cobrasgo:最後一行不是寫了,不能把int和list相加啊 10/07 00:25