Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 104
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Primzahl berechnen (optimiert)


Autor: ThomasMentzel
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 11726
  
Kick it on dotnet-kicks.de  

Beschreibung:

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


Abgelegt unter: Primzahl, Prime Number, Math.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <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;
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Klemens Nanni schrieb am:  29.03.2010 15:26:37

Dasselbe nur schlanker:
public bool is_pr(int n)
{
    for (short i = 3; i <= Math.Sqrt(n); i += 2) {
        if (n % i == 0) return false;
    }
   
    return true;
}
Klemens Nanni schrieb am:  09.04.2010 23:12:47

Nochmals schneller:
http://dotnet-snippets.de/dns/effizientere-primzahlpruefung-grosser-zahlen-SID1373.aspx


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.