The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
I couldn't use the AllPrimes function I had developed for some other Project Euler problems since the maximum array size in VB ( 231-1) is not large enough for the number in this problem. Luckily, the number under consideration has less than 15 significant digits and hence it will fit in a Double data type.
So, I wrote a long overdue routine 'IsPrime,' which returns True if a number is a prime number. The code below ran in about 0.08 seconds on my laptop.
Option Explicit
Function IsPrime(aNbr As Variant) As Boolean
Dim K As Long
K = 1
If aNbr Mod 2 = 0 Or aNbr Mod 3 = 0 Then IsPrime = False: Exit Function
Do While 6 * K - 1 < Sqr(aNbr)
If aNbr Mod (6 * K - 1) = 0 Or aNbr Mod (6 * K + 1) = 0 Then _
IsPrime = False: Exit Function
K = K + 1
Loop
IsPrime = True
End Function
Sub Euler003()
Dim aNbr As Double: aNbr = 600851475143
'aNbr = CDec(999999)
Dim I As Double, ProcTime As Single
ProcTime = Timer
I = CDec(Int(Sqr(aNbr)))
Do While I > 1
If aNbr / I = Int(aNbr / I) Then If IsPrime(I) Then Exit Do
I = I - 1
Loop
Debug.Print I, Timer - ProcTime
End Sub