Hallo Leute,
ich benötige einen leistungsstarken Algorithmus zur Findung von Primzahlen. Bisher verwende ich folgenden Programmcode, aber den habe ich mir vor Jahren mal ausgedacht und hoffe jemand kennt eine schnellere Variante:
Code
Die Umsetzung erfolgt mit LINQ, das Beispiel mit den For-Schleifen dient der Veranschaulichung.
ich benötige einen leistungsstarken Algorithmus zur Findung von Primzahlen. Bisher verwende ich folgenden Programmcode, aber den habe ich mir vor Jahren mal ausgedacht und hoffe jemand kennt eine schnellere Variante:
VB.NET-Quellcode
- Private Primzahlenliste As New List(Of Integer)
- Private Teilerliste As New List(Of Integer)
- Private Sub PrimzahlenBerechnung (Zielzahl As Integer)
- Teilerliste = New List(Of Integer) From {2, 5}
- Primzahlenliste = New List(Of Integer) From {2, 5}
- Dim Primzahl As Boolean = True
- Dim WurzelZiel As Integer = Math.Ceiling(Math.Sqrt(Zielzahl))
- For i = 2 To Zielzahl
- Primzahl = True
- Select Case True
- Case i Mod 2 = 0 OrElse i.ToString.EndsWith("5")
- Primzahl = False
- Continue For
- Case Else
- For Each x In Teilerliste
- If i Mod x = 0 Then
- Primzahl = False
- Exit For
- End If
- Next
- End Select
- If Primzahl Then
- Primzahlenliste.Add(i)
- If i < WurzelZiel Then
- Teilerliste.Add(i)
- End If
- End If
- Next
- End Sub
Die Umsetzung erfolgt mit LINQ, das Beispiel mit den For-Schleifen dient der Veranschaulichung.
Ein Computer wird das tun, was du programmierst - nicht das, was du willst.