ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 22.05.2000

Diese Seite wurde zuletzt aktualisiert am 22.05.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Primzahlen ermitteln

Zurück...


Anzeige

(-hg) mailto:hg_primenumbers@aboutvb.de

Die Funktion IsPrime prüft, ob eine Zahl eine Primzahl ist (d.h. die Zahl ist nur durch 1 und durch sich selbst teilbar).

Public Function IsPrime(ByVal Zahl As Long) As Boolean
  Dim l As Long
  
  If Zahl <> 2 And (Zahl And 1) = 0 Then
    Exit Function
  ElseIf Zahl <> 3 And Zahl Mod 3 = 0 Then
    Exit Function
  End If
  For l = 6 To Sqr(Zahl) Step 6
    If Zahl Mod (l - 1) = 0 Then
      Exit Function
    ElseIf Zahl Mod (l + 1) = 0 Then
      Exit Function
    End If
  Next
  IsPrime = True
End Function

In einer Schleife können Sie mit Hilfe dieser Funktion die Primzahlen in jedem beliebigen Zahlenbereich innerhalb des Wertebereichs des Datentyps Long finden. Wir haben diese Suchschleifen für Sie in Hilfsfunktionen gepackt, die Ihnen die gefundenen Primzahlen als Array, als Collection oder als Liste in String-Form zurückgeben. Bei allen Funktionen geben Sie die Obergrenze (Parameter ToNumber) und optional die Untergrenze (FromNumber, Voreinstellung ist 1). Bei der String-Liste können Sie optional den Trenn-String angeben (Voreinstellung ist vbCrLf) und ebenso optional festlegen, ob die Liste mit diesem Trenn-String enden soll (Voreinstellung ist False).

Public Function PrimeNumbersA(ByVal ToNumber As Long, _
 Optional ByVal FromNumber As Long = 1) As Variant

  Dim l As Long
  Dim nPrimes() As Long
  Dim nCount As Long
  
  ReDim nPrimes(1 To ToNumber - FromNumber + 1)
  For l = FromNumber To ToNumber
    If IsPrime(l) Then
      nCount = nCount + 1
      nPrimes(nCount) = l
    End If
  Next 'l
  ReDim Preserve nPrimes(1 To nCount)
  PrimeNumbersA = nPrimes
End Function

Public Function PrimeNumbersC(ByVal ToNumber As Long, _
 Optional ByVal FromNumber As Long = 1) As Collection

  Dim l As Long
  Dim nPrimes As Collection
  
  Set nPrimes = New Collection
  For l = FromNumber To ToNumber
    If IsPrime(l) Then
      nPrimes.Add l
    End If
  Next 'l
  Set PrimeNumbersC = nPrimes
End Function

Public Function PrimeNumbersS(ByVal ToNumber As Long, _
 Optional ByVal FromNumber As Long = 1, _
 Optional Separator As String = vbCrLf, _
 Optional ByVal LastSeparator As Boolean) As String

  Dim l As Long
  Dim nPrimes As String
  
  For l = FromNumber To ToNumber
    If IsPrime(l) Then
      nPrimes = nPrimes & CStr(l) & Separator
    End If
  Next 'l
  If Len(nPrimes) Then
    If Not LastSeparator Then
      nPrimes = Left$(nPrimes, Len(nPrimes) - Len(Separator))
    End If
  End If
  PrimeNumbersS = nPrimes
End Function

Die beiden Funktionen PrimeNumbersListBox bzw. PrimeNumbersComboBox lesen die Primzahlen des angegebenen Bereichs in eine ListBox bzw. in eine ComboBox ein. Im optionalen Parameter Clear geben Sie an, ob die Liste zuvor geleert werden soll (Voreinstellung gleich True). Bei der ListBox können Sie zusätzlich noch angeben, ob ihre Visible-Eigenschaft während des Füllens auf False gesetzt werden soll (Voreinstellung gleich True, d.h. die Visible-Eigenschaft wird auf False gesetzt), damit die Aktualisierung Darstellung beim Einfügen der einzelnen Primzahlen unterdrückt wird (Performance-Gewinn). Die Anzahl der Primzahlen ist allerdings begrenzt auf 32.736 - mehr können eine ListBox bzw. eine ComboBox nicht aufnehmen. Der Rückgabewert der Funktionen ist hier die Anzahl der in die Liste aufgenommenen Primzahlen.

Public Function PrimeNumbersListBox(ListBox As ListBox, _
 ByVal ToNumber As Long, Optional ByVal FromNumber As Long = 1, _
 Optional ByVal Clear As Boolean = True, _
 Optional ByVal HideControl As Boolean = True) As Long

  Dim l As Long
  Dim nCount As Long
    
  With ListBox
    If Clear Then
      .Clear
    End If
    .Visible = Not HideControl
    For l = FromNumber To ToNumber
      If IsPrime(l) Then
        .AddItem l
        nCount = nCount + 1
        If nCount > 32735 Then
          Exit For
        End If
      End If
    Next 'l
    .Visible = True
    PrimeNumbersListBox = .ListCount
  End With
End Function

Public Function PrimeNumbersComboBox(ComboBox As ComboBox, _
 ByVal ToNumber As Long, Optional ByVal FromNumber As Long = 1, _
 Optional ByVal Clear As Boolean = True) As Long

  Dim l As Long
  Dim nCount As Long
  
  With ComboBox
    If Clear Then
      .Clear
    End If
    For l = FromNumber To nToNumber
      If IsPrime(l) Then
        .AddItem l
        nCount = nCount + 1
        If nCount > 32735 Then
          Exit For
        End If
      End If
    Next 'l
    PrimeNumbersComboBox = .ListCount
  End With
End Function

Modul modPrimeNumbers (modPrimeNumbers.bas - ca. 3,3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer