Hey Leute,
ich habe in der Schule als Aufgabe bekommen ein Programm über die Goldbachsche Vermutung (http://de.wikipedia.org/wiki/Goldbachsche_Vermutung) zu schreiben. Ich habe dieses Programm nun geschrieben und anscheinend scheint dort ein Fehler vorzuliegen, der mir allerdings nach längerer Suche noch nicht aufgefallen ist! Erkennt jemand den Fehler?
Die Zahl 6 funktioniert einwandfrei, aber sobald die 8 berechnet werden soll gibt es Probleme!
Gruß und vielen Dank,
Merzan
Hier der Code:
Public Function Primzahl(zahl As Long) As Boolean
Rem Max Richter
Rem Deklarartionen
Dim teiler As Long
Dim e As Double
Dim nichtgefunden As Boolean
Rem Intialisierung
nichtgefunden = True
prim = False
nichtprim = False
teiler = 3
Rem Überprüfung
Rem Überprüfung Gerade Zahl
If zahl Mod 2 = 0 Then
nichtgefunden = False
prim = False
nichtprim = True
teiler = 2
End If
Rem Schleife
While nichtgefunden
If zahl Mod teiler = 0 Then
nichtgefunden = False
nichtprim = True
prim = False
End If
If nichtgefunden Then
e = zahl / teiler
If teiler > e Then
nichtgefunden = False
keineprim = False
prim = True
End If
End If
If nichtgefunden Then
teiler = teiler + 2
End If
Wend
If zahl = teiler Then
Primzahl = True
Else: Primzahl = False
End If
End Function
Public Sub Goldbachsche_Vermutung()
Rem Max Richter
Rem Deklarationen
Dim wert As Long
Dim limit As Long
Dim s1 As Long
Dim s2 As Long
Dim zeile As Long
Dim nichterkannt As Boolean
Rem Intialisierung
limit = Application.InputBox(prompt:="Bitte geben sie eine Zahl ein!" & (Chr(13)) & "Es werden alle Zahlen bis zu dieser Zahl darauf überprüft, ob die Goldbergsche Vermutung auf sie zutrifft.", Title:="Limit", Default:="Hier Zahl eingeben!")
wert = 6
s1 = 3
zeile = 2
nichterkannt = True
Rem Erkennung
While wert <= limit
While nichterkannt
If Primzahl(s1) Then
s2 = wert - s1
If Primzahl(s2) Then
Cells(zeile, 1) = s1
Cells(zeile, 2) = s2
Cells(zeile, 3) = wert
nichterkannt = False
zeile = zeile + 1
End If
End If
If s1 = wert Then
nichterkannt = False
MsgBox "Auf die Zahl " & wert & " trifft die Goldbergsche Vermutung nicht zu!"
End If
s1 = s1 + 2
Wend
wert = wert + 2
s1 = 3
nichterkannt = True
Wend
End Sub
|