任務是在Python中創建一個高效的無限素數產生器。這裡的關鍵術語是“無限”,這意味著生成器可以產生無窮無盡的素數流,而不知道會消耗多少素數。
提供的程式碼提供了三個最佳化的篩函數:erat2、erat2a 和erat3。每個函數在速度和效率方面都比前一個函數逐漸提高。
erat2a 函數是erat2 函數的修改,這裡不包含。透過優化奇數檢查並減少候選步驟數,erat2a 將生成速度提高了 20-25%。
erat3 利用模30 的事實進一步增強了erat2a ,除了2、3 和5 之外的所有素數都只產生八個數字(1、7、11、13、 17、19、23、29)。這使得erat3能夠更有效地過濾掉非候選奇數,從而將速度提高35-40%。
不同硬體配置上的基準測試展示了效能改進:
在Atom 330 Ubuntu 9.10 伺服器上,erat3 在這兩個方面均優於erat2 和erat2a Python 2 和3。
在 AMD Geode LX Gentoo 家庭伺服器上,erat3 再次顯示出顯著的效能提升,優於 Python 2 和 3 上的其他函數。
Sieve 函數中的這些最佳化在有效生成素數方面提供了顯著的優勢,使其適用於各種數學和計算應用。
以上是如何用 Python 創建高效的無限素數生成器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!