长变量中素数识别的故障排除
用户报告了在尝试识别长变量中的素数时获取输出的问题。 原始程序包含一个缺陷,无法获得正确的结果。
问题分析
主要错误源于不正确的循环变量初始化。 外循环的条件 (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中文网其他相关文章!