| Mod-Operator, For-Next-Schleifen, Bildfeld |
| |
| |
| Private Obergrenze As Long | |
| Const BildBreite As Long = 10000 | Beide Konstanten geben die Größe des äußeren Bild- |
| Const BildHöhe As Long = 10000 | feldes an (eher willkürliche Grenzen). |
| |
| Private Sub cmdStart_Click() | Die Primzahlenberechnung wird gestartet. |
| Dim n As Long, m As Long, PrimTest As Boolean, AnzahlPrims As Long |
| |
| picAusgabe.Cls | Ausgabefläche waschen. |
| |
| For n = 3 To Obergrenze Step 2 | Erste Schleife: Alle Zahlen von 3 bis Obergrenze testen, |
| PrimTest = True | gerade Zahlen nicht. |
| | |
| For m = 3 To Sqr(n) | 2. Schleife: Kandidat durch alle Zahlen von 3 bis |
| If n Mod m = 0 Then | Wurzel(Kandidat) teilen. |
| PrimTest = False | Ist der Rest 0, dann keine Primzahl. |
| End If | |
| Next m | |
| |
| If PrimTest = True Then | Hat der Kandidat bestanden? |
| AnzahlPrims = AnzahlPrims + 1 | |
| picAusgabe.Print n; | Semikolon erforderlich, da Text horizontal ausgegeben |
| If picAusgabe.CurrentX > picAußen.ScaleWidth - _ | werden soll. |
| picAusgabe.TextWidth("00000") Then | Ist das Ende der Zeile erreicht? |
| picAusgabe.CurrentX = 0 | |
| picAusgabe.CurrentY = picAusgabe.CurrentY + picAusgabe.TextHeight("X") * 1.2 |
| End If | |
| End If | |
| Next n | |
| |
| lblAnzahlPrimzahlen.Caption = AnzahlPrims & " Primzahlen gefunden" |
| End Sub | |
| |
| Private Sub Form_Load() | Nach dem Laden des Formulars ein paar Dinge einstellen. |
| picAusgabe.Move 0, 0, BildBreite, BildHöhe | Inneres Bild im Rahmen des äußeren Bildfeldes anordnen. |
| picAusgabe.BorderStyle = 0 | |
| picAusgabe.AutoRedraw = True | Diese Zeile ist wichtig. |
| vscSchieber.Height = picAußen.Height | Die Bildlaufleiste für das innere Bildfeld einstellen. |
| vscSchieber.LargeChange = BildHöhe / 10 | |
| vscSchieber.SmallChange = BildHöhe / 100 | |
| vscObergrenze.Value = 1000 | Diese Bildlaufleiste stellt die Obergrenze ein. |
| vscObergrenze.SmallChange = 5 | |
| vscObergrenze.LargeChange = 100 | |
| vscObergrenze.Min = 0 | |
| vscObergrenze.Max = 32767 | Dies ist der maximale Höchstwert. |
| Obergrenze = vscObergrenze.Value | |
| lblObergrenze.Caption = Obergrenze | |
| End Sub | |
| |
| Private Sub picAusgabe_Click() | |
| picAusgabe.Cls | |
| End Sub | |
| |
| Private Sub vscObergrenze_Change() | |
| Obergrenze = vscObergrenze.Value | Änderung an der Bildlaufleiste ändert die Obergrenze. |
| lblObergrenze.Caption = Obergrenze | |
| End Sub | |
| |
| Private Sub vscSchieber_Change() | |
| picAusgabe.Top = -vscSchieber.Value | Änderung an der Bildlaufleiste ändert den angezeigten |
| End Sub | Ausschnitt. |
| |
| Damit die Ausgabefläche gescrollt werden kann, wird ein inneres Bildfeld - picAusgabe - in einem äußeren Bildfeld |
| - picAußen - angeordnet, so dass durch Verschieben des inneren Bildfeldes im Rahmen des äußeren Bildfeldes ein |
| scrollbarer Bereich nachgebildet wird. Diese Erweiterung dient lediglich der besseren Bedienbarkeit und hat mit der |
| Berechnung der Primzahlen nichts zu tun. |
| Indem die Top-Eigenschaft einen negativen Wert erhält, wird die obere Ecke der Ausgabefläche in den nicht sichtbaren |
| Bereich des umgebenden Bildfeldes gelegt, so daß der untere Teil der Ausgabefläche angezeigt wird. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| . |
| |