Fehlerbehebung bei der Identifizierung von Primzahlen in langen Variablen
Ein Benutzer hat Probleme bei der Ausgabe gemeldet, als er versuchte, Primzahlen innerhalb einer langen Variablen zu identifizieren. Das ursprüngliche Programm enthielt einen Fehler, der korrekte Ergebnisse verhinderte.
Problemanalyse
Der primäre Fehler war auf eine falsche Initialisierung der Schleifenvariablen zurückzuführen. Die Bedingung der äußeren Schleife (i <= num
) war ineffizient und führte wahrscheinlich dazu, dass das Programm auf unbestimmte Zeit ausgeführt wurde oder falsche Ergebnisse lieferte.
Erweiterter Code
Unten finden Sie ein überarbeitetes Programm, das diese Probleme behebt und effizient Primzahlen innerhalb eines bestimmten Bereichs findet:
<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>
Leistungsverbesserungen
Dieser verbesserte Code bietet eine bessere Leistung und nähert sich der zeitlichen Komplexität von O(n log log n) an, sodass er für größere Zahlenbereiche geeignet ist. Die innere Schleifenbedingung (j * j <= i
) ist eine Schlüsseloptimierung.
Das obige ist der detaillierte Inhalt vonWarum findet mein Programm in einer langen Variablen keine Primzahlen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!