Power Fast Prime Generator

    • VB.NET
    • .NET (FX) 4.0

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

      Power Fast Prime Generator

      Hallo Community

      Wollte den schon lange mal hier reinstellen. Hier ein sehr schneller Prime-Generator.

      Aufgebaut auf den zwei Gleichungen

      Quellcode

      1. p mod 4 = 1 oder 3
      2. p mod 6 = 1 oder 5


      Das heisst:
      Eine x-beliebige Zahl multipliziert mit 4 oder 6 ± 1 ist ein potentieller Prime-Kandidat.

      Spoiler anzeigen

      VB.NET-Quellcode

      1. 'Generator instanzieren
      2. Dim pfpg As New PowerFastPrimeGenerator
      3. 'Anzahl definieren
      4. Dim cnt = 1_000I
      5. 'Array für Primzahlen
      6. Dim primes1 = New Int64(cnt - 1) {}
      7. For i As Int32 = 0 To cnt - 1
      8. primes1(i) = pfpg.GetPrime()
      9. Next
      10. Console.WriteLine("Count = {0}", cnt)
      11. 'Primes in einem bestimmten Bereich
      12. Dim primes2 = New Int64(cnt - 1) {}
      13. Dim _min, _max As Int64
      14. _min = 300_000L
      15. _max = 500_000L
      16. 'Prüfen von min und max
      17. 'über die Swap-Methode
      18. pfpg.Swap(_min, _max)
      19. For i As Int32 = 0 To cnt - 1
      20. primes2(i) = pfpg.GetPrime(_min, _max)
      21. Next
      22. Console.WriteLine("Count = {0}", cnt)
      23. 'PrimeTest mit Miller-Rabbin (BigInteger)
      24. '>> !!! Methode IsMRPrime auf Public stellen
      25. Dim isprime As Boolean = False
      26. Dim num = 9223372036854775783L
      27. If pfpg.IsMRPrime(num) Then
      28. isprime = True
      29. End If
      30. Console.WriteLine("{0} is Prime: {1} ", num, isprime)



      EDIT:
      Eine kleines WinForms-Beispiel hinzugefügt.
      Danke RFG, ich hoffe das Anhängsel gibt es wieder.

      EDIT:
      Bin gerade auf das Video gestossen, wobei ich meine Formeln noch ein bisschen präziser ausgedrückt habe.

      Quellcode

      1. p mod 6 = 1 oder 5 // wären für die ungeraden Zahlen gedacht

      The Prime Number Race (with 3Blue1Brown) - Numberphile



      Freundliche Grüsse

      exc-jdbi


      UPDATES:
      Primegen.vb - Erste Version in Vb.Net - 2019
      PFPG.zip - Winformsanwendung in Vb.Net - 2019
      PFPG-DotNet8.0.zip - Optimierte Winform C#-Version .Net8.0 - 2024
      PFPG-DotNet8.0-Async.zip - Winform C#-Async-Parallel .Net8.0 - 2024
      BigPrimeGenerator.cs - C#-Console .Net8.0 Async-Parallel, nur lange Primes-Generierung - 2024
      Different_BigPrimeGenerators.zip - C#-Console Async-Parallel, mit verschiedenen Arten der BigPrimeGenerators. - 2024
      DiemitkoAlgoritm.zip - C#-Console .Net8.0, Async-Parallel, ein interessanter Primzahlenfinder, der lange von der Ukraine verwendet worden ist. - 2024

      NEU: Different_BigPrimeGenerator.zip Async-Parallel. Beinhaltet die schnellste je entwickelte Variante, die ich kenne. Siehe auch folgender Link mit Beispiele für C# und Vb.Net.
      github.com/exc-jdbi/BigPrimeGenerators

      Dateien

      Dieser Beitrag wurde bereits 22 mal editiert, zuletzt von „exc-jdbi“ () aus folgendem Grund: Neuer Algo hinzugefügt

      @exc-jdbi Wenn Du nun noch einen Prime-Test einbaust, wäre das eine brauchbare Sache. :thumbup:
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!