長變數中素數辨識的故障排除
使用者報告了在嘗試識別長變數中的素數時獲取輸出的問題。 原始程式包含一個缺陷,無法得到正確的結果。
問題分析
主要錯誤源自於不正確的迴圈變數初始化。 外循環的條件 (i <= num
) 效率低下,可能導致程式無限期運作或產生不正確的結果。
增強程式碼
以下是一個修改後的程序,可以解決這些問題並有效地找到給定範圍內的素數:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PrimeNumberFinder { class Program { static void FindPrimes(long num) { bool isPrime; for (long i = 2; i <= num; i++) { isPrime = true; for (long j = 2; j * j <= i; j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { Console.WriteLine(i); } } } static void Main(string[] args) { Console.WriteLine("Enter a number:"); long inputNum; if (long.TryParse(Console.ReadLine(), out inputNum)) { FindPrimes(inputNum); } else { Console.WriteLine("Invalid input. Please enter a valid long integer."); } } } }</code>
效能增強
這種改進的程式碼提供了更好的效能,接近 O(n log log n) 時間複雜度,使其適合更大範圍的數字。 內循環條件 (j * j <= i
) 是一個關鍵的最佳化。
以上是為什麼我的程式無法在 long 變數中找到質數,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!