Matematické funkce VI - Prvočíslo

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

Zpět

Autor: The Bozena