Ludic numbers: Difference between revisions

Added FreeBASIC
(Restored visibility of stretch goal formulae (had been lost to most browsers))
(Added FreeBASIC)
Line 1,188:
Ludic numbers 2000 to 2005: 21475 21481 21487 21493 21503 21511
Ludic Triplets below 250: [1 3 7] [5 7 11] [11 13 17] [23 25 29] [41 43 47] [173 175 179] [221 223 227] [233 235 239]</pre>
 
=={{header|FreeBASIC}}==
<lang freebasic>' 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 = n * 11 '' 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(25, lu())
Print "The first 25 Ludic numbers are :"
For i = 1 To 25
Print Using "###"; lu(i);
Print " ";
Next
Erase lu
Print
 
Dim As Integer Count = 0
ludic(1000, lu())
For i = 1 To 1000
If lu(i) <= 1000 Then
count += 1
Else
Exit For
End If
Next
Erase lu
Print
Print "There are"; count; " Ludic numbers <= 1000"
Print
 
Print "The 2000th to 2005th Ludics are :"
ludic(2005, lu())
For i = 2000 To 2005
Print lu(i); " ";
Next
Erase lu
Print : Print
 
Print "The Ludic triplets below 250 are : "
Dim As Integer j, k, ldc
Dim b As Boolean
ludic(250, lu())
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 </lang>
 
{{out}}
<pre>
The first 25 Ludic numbers are :
1 2 3 5 7 11 13 17 23 25 29 37 41 43 47 53 61 67 71 77
83 89 91 97 107
 
There are 142 Ludic numbers <= 1000
 
The 2000th to 2005th Ludics are :
21475 21481 21487 21493 21503 21511
 
The Ludic triplets below 250 are :
(1, 3, 7)
(5, 7, 11)
(11, 13, 17)
(23, 25, 29)
(41, 43, 47)
(173, 175, 179)
(221, 223, 227)
(233, 235, 239)
</pre>
 
=={{header|Go}}==
9,486

edits