python一句话,求10000以内的素数

最近加入了一个QQ群,学到如下,原文是求100以内的素数,因为难以用肉脑比较时间,所以改成10000。

[sourcecode language=”python”]

#Fictiony 陈:
[x for x in range(2,10000) if not [i for i in range(2,x) if x % i == 0 ] ]

#Fictiony 陈:
reduce( lambda s, x: s+ ([x] if all([x %i for i in s]) else []), range(2,10000), [])

#七月:
[2]+[d for d in range(3, 10000, 2) if 2 ** (d -1) %d == 1]

[/sourcecode]

打赏

《python一句话,求10000以内的素数》有2个想法

  1. 第一个算法肯定对,第二个算法的输出和第一个一样,第三个算法有问题,结果和前面两个都不相同

  2. 我测试了这几句,应该没有什么问题。测试环境:
    1. Windows XP SP3, Python 2.5
    2. Ubuntu Linux 9.10(amd64), Python 2.6.4

发表评论

电子邮件地址不会被公开。 必填项已用*标注