Feedback

VB - Das Sieb des Eratosthenes

Veröffentlicht von am 22.04.2010
(1 Bewertungen)
Diese Funktion berechnet alle Primzahlen < n.
Als Optimierung habe ich gerade Zahlen übersprungen.

Alternativ können die gefundenen Zahlen auch in einer Liste gespeichert werden, welche dann zurückgegeben wird.

Mehr zum Sieb: http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes

Sieve of Eratos.: 664579 primes < 10^7 computed in 00:01.3361552

Sieve of Eratos.: 5761455 primes < 10^8 computed in 00:23.7904888

mm:ss.ms

Zum Vergleich: http://dotnet-snippets.de/dns/effizientere-primzahlpruefung-grosser-zahlen-SID1373.aspx
GFU-Schulungen  [Anzeige]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

Sub eratos(ByVal l As Integer)
    Dim primes(l) As Boolean

    For i As Integer = 3 To Math.Sqrt(l) Step 2
        For j As Integer = i * i To l Step i
            primes(j) = True
        Next
    Next

    Console.WriteLine(2)
    For i = 3 To l Step 2
        If Not primes(i) Then Console.WriteLine(i)
    Next
End Sub

4 Kommentare zum Snippet

Firendeath schrieb am 07.06.2010:
Deine Bemühungen in allen Ehren aber guck dir mal diesen Post an http://forum.byte-welt.net/showpost.php?p=12074&postcount=26 <-- Post 26 & 27
Der ist umgerechnet fast 10x so schnell wie dein Programm.
Wollts nur gesagt habn trotzdem guter Code ;-)
Klemens Nanni schrieb am 16.07.2010:
Das Sieb von Atkin ist eine Optimierung des Sieb des Eratosthenes. Auch das wird bald als Snippet von mir hier veröffentlicht.
Klemens Nanni schrieb am 05.08.2010:
Hier das versprochene Snippet.
http://dotnet-snippets.de/dns/das-sieb-von-atkin-SID1426.aspx
Klemens Nanni schrieb am 16.08.2010:
Der Code wurde sichtlich entschlankt. Durch Verwendung eines Arrays anstatt einer Liste entfallen das Hinzufügen aller boolschen Werte und das Negieren jener geraden.

Die While-Schleife wurde durch eine For-Schleife ersetzt, was ebenfalls ein paar Zeilen einspart.
 

Logge dich ein, um hier zu kommentieren!