38 lines
1.2 KiB
Text
38 lines
1.2 KiB
Text
Option Explicit
|
|
|
|
Sub Main_Even_Odd()
|
|
Dim i As Long
|
|
|
|
For i = -50 To 48 Step 7
|
|
Debug.Print i & " : IsEven ==> " & IIf(IsEven(i), "is even", "is odd") _
|
|
& " " & Chr(124) & " IsEven2 ==> " & IIf(IsEven2(i), "is even", "is odd") _
|
|
& " " & Chr(124) & " IsEven3 ==> " & IIf(IsEven3(i), "is even", "is odd") _
|
|
& " " & Chr(124) & " IsEven4 ==> " & IIf(IsEven4(i), "is even", "is odd")
|
|
Next
|
|
End Sub
|
|
|
|
Function IsEven(Number As Long) As Boolean
|
|
'Use the even and odd predicates
|
|
IsEven = (WorksheetFunction.Even(Number) = Number)
|
|
End Function
|
|
|
|
Function IsEven2(Number As Long) As Boolean
|
|
'Check the least significant digit.
|
|
'With binary integers, i bitwise-and 1 equals 0 iff i is even, or equals 1 iff i is odd.
|
|
Dim lngTemp As Long
|
|
lngTemp = CLng(Right(CStr(Number), 1))
|
|
If (lngTemp And 1) = 0 Then IsEven2 = True
|
|
End Function
|
|
|
|
Function IsEven3(Number As Long) As Boolean
|
|
'Divide i by 2.
|
|
'The remainder equals 0 if i is even.
|
|
Dim sngTemp As Single
|
|
sngTemp = Number / 2
|
|
IsEven3 = ((Int(sngTemp) - sngTemp) = 0)
|
|
End Function
|
|
|
|
Function IsEven4(Number As Long) As Boolean
|
|
'Use modular congruences
|
|
IsEven4 = (Number Mod 2 = 0)
|
|
End Function
|