' FB 1.05.0 Win64 Function isPrime(n As Integer) As Boolean If n Mod 2 = 0 Then Return n = 2 If n Mod 3 = 0 Then Return n = 3 Dim d As Integer = 5 While d * d <= n If n Mod d = 0 Then Return False d += 2 If n Mod d = 0 Then Return False d += 4 Wend Return True End Function Sub getPrimeFactors(factors() As UInteger, n As UInteger) If n < 2 Then Return If isPrime(n) Then Redim factors(0 To 0) factors(0) = n Return End If Dim factor As UInteger = 2 Do If n Mod factor = 0 Then Redim Preserve factors(0 To UBound(factors) + 1) factors(UBound(factors)) = factor n \= factor If n = 1 Then Return If isPrime(n) Then factor = n Else factor += 1 End If Loop End Sub Dim factors() As UInteger Dim primes(1 To 17) As UInteger = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59} Dim n As UInteger For i As UInteger = 1 To 17 Erase factors n = 1 Shl primes(i) - 1 getPrimeFactors factors(), n Print "2^";Str(primes(i)); Tab(5); " - 1 = "; Str(n); Tab(30);" => "; For j As UInteger = LBound(factors) To UBound(factors) Print factors(j); If j < UBound(factors) Then Print " x "; Next j Print Next i Print Print "Press any key to quit" Sleep