vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB4, VB5, VB601.10.01
Primzahlen ermitteln - optimiert

Diese Routine zeigt, wie man alle Primzahlen bis zu einer bestimmten Zahl ermitteln kann.

Autor:   Baar LunBewertung:  Views:  21.378 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Die nachfolgende Funktion ermittelt alle Primzahlen bis zu einer bestimmten Zahl und gibt diese als String-Variable zurück.
Zur Info: Primzahlen sind Zahlen, die nur durch 1 und durch sich selber teilbar sind, z.B. 3,5 oder 7.

' Alle Primzahlen bis BisZahl ermitteln
Private Function GetPrimzahlen(BisZahl As Integer) As String
  Dim keinePrim As Boolean
  Dim m As Integer
  Dim n As Integer
  Dim t As Integer
  Dim Primzahlen As String
 
  ' Herausfiltern der Primzahlen
  ' Alle ungeraden Zahlen durchzählen
  For n = 3 To BisZahl Step 2
    keinePrim = False
    m = sqr(n) 
    ' Testen ob die Zahl einen Teiler hat.
    For t = 3 To m Step 2
      If n Mod t = 0 Then
        ' Zahl hat einen Teiler, also keine Primzahl
        keinePrim = True
        Exit For
      End If
    Next t
    m = n + 1
    If Not keinePrim Then _
      Primzahlen = Primzahlen & " " & n
  Next n
  GetPrimzahlen = Primzahlen
End Function

Im Gegensatz zu unserem früheren Tipp zur Ermittlung der Primzahlen, ist die Funktionsweise der obigen Routine um ein Vielfaches optimiert worden, da:

Der größte Teiler einer Zahl kann nur die Wurzel dieser Zahl sein, da sonst wieder ein Teiler "auftaucht", der schon geprüft wurde:

Bsp. 100
Teiler 5 :  100 /  5 = 20
Teiler 20:  100 / 20 =  5

Somit:

Teiler sqr(100) = 10 : 100 / 10 = 10

Deshalb braucht m nur bis wurzel(n) zu zählen und nicht bis n-1. Dies spart enorm Zeit, wenn man den Bereich der Primzahlen auf Long ausdehnt.
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.