基于集合理解的Python素数生成

2024-10-06 12:36:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python开头的一个作业中使用set comprehension调用小于100的素数列表。我可以用

nonPrime = { x for x in range(2, 100) for y in range(2, x) if x % y == 0 }

这有效地返回了所有的非质数,但是我找不到一种方法,除了偏移,或者用一组从2到100的所有数得到一组素数。有没有一种方法可以在同一个集合的理解中得到这个集合的对立面?在


Tags: 方法in列表forif作业range素数
1条回答
网友
1楼 · 发布于 2024-10-06 12:36:39

这不是最有效的算法,但要实现它:

prime = {x for x in range(2, 100) if all(x % y != 0 for y in range(2, x))}

或者,相当于:

^{pr2}$

对于一个简单的优化,一旦超过x的平方根,就可以停止检查可能的因子:

prime = {x for x in range(2, 100) if all(x % y != 0 for y in range(2, int(math.floor(math.sqrt(x))) + 1))}

相关问题 更多 >