在 C# 中增強素數產生
您的 C# 程式碼旨在識別指定範圍內的素數,但目前有缺陷,導致沒有輸出。問題在於用於確定質數的演算法。
理解程式碼:
prime_num
方法嘗試找出給定 num
之前的質數。它將 isPrime
初始化為 true
並迭代從 0 到 num
的數字。對於每個數字 i
,它會檢查是否能被 2 到 num
的數字整除。如果 i
可以被除自身以外的任何數字整除,則 isPrime
變成 false
。只有當所有檢查後 isPrime
仍為 true
時,i
才被視為質數並被列印。
辨識錯誤:
主要錯誤是外在循環的增量(for (int i = 0; i <= num; i )
)。這包括非素數 0,並執行不必要的檢查。 內循環也執行冗餘計算。
更有效的解決方案:
為了獲得最佳素數生成,請考慮埃拉托斯特尼篩法。該演算法透過消除從 2 開始的每個質數的倍數,顯著提高了效能。這大大減少了所需檢查的數量。
簡而言之,原始程式碼的低效率源自於不正確的循環迭代和冗餘檢查。 採用更有效的演算法,例如埃拉托斯特尼篩法或試除篩法,將更快產生正確的質數。
以上是如何優化我的 C# 程式碼以高效產生質數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!