Function: Test ob ein Zahl (un)gerade ist

Gibt es in VB ein Function die testen kann ob ein Zahl ungerade oder gerade ist? und wenn nicht, was würde in einer selbstgeschriebenen stehen?

Dankeschön schonmal

cu, Paul

hi

eine Funktion die das macht kenne ich nicht aber mit meiner geht es:

Function IsGerade(ByVal a_lngZahl As Long) As Boolean
If a_lngZahl / 2 = a_lngZahl \ 2 Then
IsGerade = True
Else
IsGerade = False
End If
End Function

Gruss, Giuseppe

Hallo Leute,

es geht noch kürzer

Function IsGerade(Zahl As Long) As Boolean
IsGerade = (Zahl Mod 2 = 0)
End Function

Anmerkung: X mod Y ergibt den Rest der Ganzzahldivision X/Y

Ich hoffe es hilft dir weiter!

Markus

Function IsGerade(Zahl As Long) As Boolean
IsGerade = (Zahl Mod 2 = 0)
End Function

Cool mit dem Mod :wink: ist mir gar nicht in den sinn gekommen.

gruss, Giuseppe

Hallo und noch eine Variante

Function IsGerade(ByVal Zahl As Long) As Boolean
IsGerade = ((Zahl And 1) = 0)
End Function

Diese Variante müsste in der Ausführung noch einiges schneller sein, da sie sehr maschinennah ist. Der Bit-Operator AND kann vom Compiler direkt in den entsprechenden Maschinenbefehl umgesetzt werden, wohingegen der Mod-Befehl, der insgesamt um einiges mächtiger ist, was hier aber nicht gebraucht wird, vom Compiler in mehrere Zeilen Code umgesetzt werden muß.

Allerdings ist bei heutigen Computern die Geschwindigkeit nicht mehr so ausschlaggebend.

CU
Markus

Hallo

Wenn wir schon beim optimieren sind… :wink:
so gehts glaubs noch ein wenig schneller

function isgerade(byval zahl as long) as boolean
isgerade = not(zahl and 1)
end function

oder

function isungerade(byval zahl as long) as boolean
isungerade = zahl and 1
end function

gruss Giuseppe

Stimmt! :wink:

CU Markus