2024-10-06 12:36:39 发布
网友
我在Python开头的一个作业中使用set comprehension调用小于100的素数列表。我可以用
nonPrime = { x for x in range(2, 100) for y in range(2, x) if x % y == 0 }
这有效地返回了所有的非质数,但是我找不到一种方法,除了偏移,或者用一组从2到100的所有数得到一组素数。有没有一种方法可以在同一个集合的理解中得到这个集合的对立面?在
这不是最有效的算法,但要实现它:
prime = {x for x in range(2, 100) if all(x % y != 0 for y in range(2, x))}
或者,相当于:
对于一个简单的优化,一旦超过x的平方根,就可以停止检查可能的因子:
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))}
这不是最有效的算法,但要实现它:
或者,相当于:
^{pr2}$对于一个简单的优化,一旦超过
x
的平方根,就可以停止检查可能的因子:相关问题 更多 >
编程相关推荐