作者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
1F:→ suhorng:可以先给出 Scheme (/ LISP / Racket) 程式吗? 10/05 23:28
2F:推 ck574b027:cdr 已经回传 list,不需要用括号,通通去掉吧。 10/06 02:34
3F:推 cobrasgo:最後一行不是写了,不能把int和list相加啊 10/07 00:25