在 Python 中高效識別素數
尋找給定範圍內的一系列素數是一項常見的程式設計任務。為了在 Python 中實現這一點,我們採用迴圈和條件語句的邏輯序列來確定質數。然而,需要注意的是,一些初始嘗試可能會產生不正確的結果。
更正素數識別代碼
對原始代碼的檢查揭示了一個嚴重缺陷:它錯誤地打印奇數,而不是素數。此錯誤源自於缺乏有效辨識非素數的條件。以下是該問題的詳細說明:
<code class="python">for num in range(1, 101): for i in range(2, num): if num % i == 0: break else: print(num) break</code>
要修正此問題,我們需要明確檢查該數字是否可以被 2 及其自身之間的任何數字整除。如果找不到約數,則它是質數。這是改進版本:
<code class="python">for num in range(2, 101): prime = True for i in range(2, num): if (num % i == 0): prime = False if prime: print(num)</code>
最佳化程式碼以提高效率
為了提高效能,建議僅檢查給定平方根的除數數字。如果在這個範圍內找不到約數,則可以認為它是質數。這種最佳化大大減少了所需的迭代次數:
<code class="python">import math for num in range(2, 101): if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)): print(num)</code>
進一步細化
僅選擇奇數可以使程式碼更有效率,因為素數更大比2 總是奇數。修改後的程式碼:
<code class="python">import math print(2) for num in range(3, 101, 2): if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)): print(num)</code>
以上是如何在 Python 中有效辨識素數:逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!