簡體   English   中英

Python使用Set Comprehension生成素數

[英]Python generating prime numbers using Set Comprehension

我正在開始Python的一項工作中,使用set comprehension調用少於100的質數列表。 我可以使用生成非素數

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

這有效地返回了所有非素數,但是我無法找到除Excursive之外的其他方法。或者,這是一組從2到100的所有數的集合,以獲得一組素數。 有沒有一種方法可以讓我在相同的集合理解中得到與該集合相反的信息?

這不是最有效的算法,但是要實現它:

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

或者,等效地:

prime = {x for x in range(2, 100) if not any(x % y == 0 for y in range(2, 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))}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM