Funkce:
'Vrátí True, je
li číslo prvočíslo
Function IsPrime(ByVal number As Long) As Boolean
'
manuálně otestujeme 2 a 3
If
number > 3 Then
If
number Mod 2 = 0 Then Exit Function
If
number Mod 3 = 0 Then Exit Function
End
If
'
Nyní budeme číslo dělit násobky 2 a 3
' To lze provést opravdu jednoduše, neboť začneme
na 5 a budeme
' zvyšovat o 2 resp. o 4, tzn.
' 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, ...
Dim
divisor As Long
Dim
increment As Long
Dim
maxDivisor As Long
divisor
= 5
increment = 2
'
Nebudeme potřebovat jít dále než je mocnina čísla
maxDivisor
= Sqr(number) + 1
Do
Until divisor > maxDivisor
If
number Mod divisor = 0 Then Exit Function
divisor
= divisor + increment
'
Toto modifikuje 2 na 4 atd.
increment
= 6 - increment
Loop
'
Pokud jsme se dostali až sem, jedná se o prvočíslo
IsPrime
= True
End
Function
|