106 lines
2 KiB
Text
106 lines
2 KiB
Text
' 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
|