python求素数

来源:互联网 发布:服务器批量安装linux 编辑:程序博客网 时间:2024/05/16 15:50

sfunc = lambda max:filter(lambda x:all(map(lambda xx:x%xx,range(2,x))),range(2,max))sfunc(100)[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
all()函数接受一个Iterable,如果Iterable的所有元素不为0、''、False或者Iterable为空,返回True,否则返回False;
lambda x:x 表示匿名函数,冒号前面的x表示函数参数。匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。


def s1():l = [2]for i in range(3,10000,2):    for j in l:        if i%j ==0:            break    else:        l.append(i)return ldef s2():l = [2]for i in range(3,10000,2):    for j in l:        if i%j ==0:            break        if j>math.sqrt(i):            l.append(i)            break    else:        l.append(i)return l



0 0
原创粉丝点击