' FB 1.05.0 Win64 ' As it would be too expensive to actually remove elements from the array ' we instead set an element to 0 if it has been removed. Sub ludic(n As Integer, lu() As Integer) If n < 1 Then Return Redim lu(1 To n) lu(1) = 1 If n = 1 Then Return Dim As Integer count = 1, count2 Dim As Integer i, j, k = 1 Dim As Integer ub = 22000 '' big enough to deal with up to 2005 ludic numbers Dim a(2 To ub) As Integer For i = 2 To ub : a(i) = i : Next Do k += 1 For i = k to ub If a(i) > 0 Then count += 1 lu(count) = a(i) If n = count Then Return a(i) = 0 k = i Exit For End If Next count2 = 0 j = k + 1 While j <= ub If a(j) > 0 Then count2 +=1 If count2 = k Then a(j) = 0 count2 = 0 End If End If j += 1 Wend Loop End Sub Dim i As Integer Dim lu() As Integer ludic(2005, lu()) Print "The first 25 Ludic numbers are :" For i = 1 To 25 Print Using "###"; lu(i); Print " "; Next Print Dim As Integer Count = 0 For i = 1 To 1000 If lu(i) <= 1000 Then count += 1 Else Exit For End If Next Print Print "There are"; count; " Ludic numbers <= 1000" Print Print "The 2000th to 2005th Ludics are :" For i = 2000 To 2005 Print lu(i); " "; Next Print : Print Print "The Ludic triplets below 250 are : " Dim As Integer j, k, ldc Dim b As Boolean For i = 1 To 248 ldc = lu(i) If ldc >= 244 Then Exit For b = False For j = i + 1 To 249 If lu(j) = ldc + 2 Then b = True k = j Exit For ElseIf lu(j) > ldc + 2 Then Exit For End If Next j If b = False Then Continue For For j = k + 1 To 250 If lu(j) = ldc + 6 Then Print "("; Str(ldc); ","; ldc + 2; ","; ldc + 6; ")" Exit For ElseIf lu(j) > ldc + 6 Then Exit For End If Next j Next i Erase lu Print Print "Press any key to quit" Sleep