Angeregt von den Kommentaren des folgenden Snippets http://dotnet-snippets.de/dns/pruefen-ob-eine-zahl-eine-primzahl-ist-SID227.aspx habe ich den optimierten Algorithmus programmiert. Der Code hat folgende Verbesserungen:
1. Sprechenden Funktionsnamen und Kommentar ;)
2. Schleife nur bis zur Wurzel der Testzahl
3. Erhöhen des Zählers um 2
/// <summary>
/// Prüfen auf eine Primzahl. Es werden nur alle ungeraden Zahlen bis zur Würzel der
/// zu prüfenden Zahl getestet.
/// </summary>
/// <param name="Number">Zu prüfende Zahl</param>
/// <returns>True, wenn die Zahl eine Primzahl ist</returns>
/// <see></see>
public static bool IsPrimeNumber(long testNumber)
{
if (testNumber < 2) return false;
// 2 explizit testen, da die Schliefe an 3 startet
if (testNumber % 2 == 0) return false;
long upperBorder = (long)System.Math.Round(System.Math.Sqrt(testNumber), 0);
// Alle ungeraden Zahlen bis zur Wurzel prüfen
for (long i = 3; i <= upperBorder; i = i + 2)
if (testNumber % i == 0) return false;
return true;
}
4 Kommentare zum Snippet