Hallo,
Du solltest versuchen, Dir den Ablauf aufzuzeichnen. Und behalte Dir immer vor Augen, was das Ergebnis sein soll.
Hier soll geprüft werden, ob eine Zahl eine Primzahl ist. Das ist sie, wenn sie nur durch sich selbst teilbar ist. Das Prgramm soll nun testen, ob die Zahl durch irgendeine andere Zahl, die kleiner ist als sie selbst teilbar ist. Das hast Du schon in der Schleife und mit mod umgesetzt. Dein Fehler ist nun, dass Du nicht bei jedem Wert der Schleife darauf prüfst, ob die Zahl durch den Wert ohne Rest teilbar ist.
Außerdem kannst Du im Umkehrschluss sagen, wenn schon eine Teilbarkeit gegeben ist, brauchst Du die restlichen Werte nicht mehr prüfen. Dann wäre ein Ausstieg aus der Schleife oder der Prozedur sinnvoll.
Weiterhin soll die Sub (oder vielleicht doch Function) prüfen, ob eine Zahl prim ist oder nicht. Ich würde hier eine Variable vom Typ boolean wählen. Der Wert wird am Anfang der Prozedur auf wahr gestellt und wenn eine Zahl vorkommt, die als Teiler in Frage kommt wird er auf false gesetzt und die Schleife verlassen.
Verwende die While ... Wend-Bedingung gleichzeitig zum Beenden, wenn ein Wert gefunden wird, indem Du das Ergebnis in die Bedingung einbeziehst.
Mein Vorschlag:
Private Sub cmdBerechnen_Click()
Dim intl As Integer
Dim intEingabe As Integer
Dim blnErgebnis As Boolean
Dim txtErgebnis As String
blnErgebnis = True
'intEingabe = Val(Me.txtEingabe.Value)
intEingabe = 102
intl = 2
While blnErgebnis And intl < intEingabe 'Solange die Ergebnisvariable WAHR ist, soll die Schleife ausgeführt werden
If intEingabe Mod intl = 0 Then
blnErgebnis = False
End If
intl = intl + 1
Wend
If blnErgebnis Then
txtErgebnis = intEingabe & " ist keine Primzahl!"
Else
txtErgebnis = intEingabe & " ist eine Primzahl!"
End If
End Sub
Gruß
Steuerfuzzi
|