godi
Level-1
- Beiträge
- 1.460
- Reaktionspunkte
- 185
-> Hier kostenlos registrieren
Hallo!
Ich habe jetzt ein Programm geschrieben zur Ermittlung von Primzahlen zwischen zwei Zahlen (von bis):
1) Kann man das Programm einfacher auch noch schreiben?
2) Wenn ich die Primzahlen von 0 bis 100000 haben will dann bleibt das Programm bei 28433 stehen. Warum ist das so?
godi
Ich habe jetzt ein Programm geschrieben zur Ermittlung von Primzahlen zwischen zwei Zahlen (von bis):
Code:
Option Explicit
Private Sub Form_Load()
txtPrimzahl.Locked = True
txtvon = 0
txtbis = 100
End Sub
Private Sub cmdErmitteln_Click()
Dim von As Long
Dim bis As Long
Dim Primzahl As Long
Dim Mögliche_Zahlen As Long
Dim Divisor As Long
Dim Rest As Long
Dim boolPrimzahl As Boolean
Dim Zahl As Long
If Not IsNumeric(txtvon) Then
MsgBox prompt:=("Geben sie bitte eine Zahl für 'Von' ein!")
Exit Sub
End If
If Not IsNumeric(txtbis) Then
MsgBox prompt:=("Geben sie bitte eine Zahl für 'bis' ein!")
Exit Sub
End If
txtPrimzahl.Text = ""
von = txtvon
bis = txtbis
Zahl = 0
'Ermittle Primzahlen
For Mögliche_Zahlen = von To bis 'Ermitteln der Zahlen die in Frage kommen können
For Divisor = 2 To Mögliche_Zahlen - 1 'Divisor ermitteln (2 bis Mögliche Zahl minus 1)
Rest = Mögliche_Zahlen Mod Divisor 'Ermittle den Rest
If Rest = 0 Then 'Kontrolliere ob Rest überbleibt
boolPrimzahl = True
End If
Next
DoEvents
If Not boolPrimzahl And Not (Mögliche_Zahlen = 0 Or Mögliche_Zahlen = 1) Then
Zahl = Zahl + 1
Primzahl = Mögliche_Zahlen
txtPrimzahl.Text = txtPrimzahl.Text & "Primzahl " & Zahl & ": " & Primzahl & vbCrLf
End If
boolPrimzahl = False
Next
End Sub
1) Kann man das Programm einfacher auch noch schreiben?
2) Wenn ich die Primzahlen von 0 bis 100000 haben will dann bleibt das Programm bei 28433 stehen. Warum ist das so?
godi