Ludic numbers: Difference between revisions

m (added to a category (Prime Numbers).)
Line 2,266:
{21475, 21481, 21487, 21493, 21503, 21511}
{{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|Nim}}==
Ludic number generation is inspired by Python lazy streaming generator.
Note that to store the ludic numbers we have chosen to use an array rather than a sequence, which allows to use 1-based indexes.
<lang Nim>import strutils
 
type LudicArray[N: static int] = array[1..N, int]
 
func initLudicArray[N: static int](): LudicArray[N] =
## Initialize an array of ludic numbers.
result[1] = 1
for i in 2..N:
var k = 0
for j in countdown(i - 1, 2):
k = k * result[j] div (result[j] - 1) + 1
result[i] = k + 2
 
 
proc print(text: string; list: openArray[int]) =
## Print a text followed by a list of ludic numbers.
var line = text
let start = line.len
for val in list:
line.addSep(", ", start)
line.add $val
echo line
 
 
func isLudic(ludicArray: LudicArray; n, start: Positive): bool =
## Check if a number "n" is ludic, starting search from index "start".
for idx in start..ludicArray.N:
let val = ludicArray[idx]
if n == val: return true
if n < val: break
 
 
when isMainModule:
 
let ludicArray = initLudicArray[2005]()
 
print "The 25 first ludic numbers are: ", ludicArray[1..25]
 
var count = 0
for n in ludicArray:
if n > 1000: break
inc count
echo "\nThere are ", count, " ludic numbers less or equal to 1000."
 
print "\nThe 2000th to 2005th ludic numbers are: ", ludicArray[2000..2005]
 
echo "\nThe triplets of ludic numbers less than 250 are:"
var line = ""
for i, n in ludicArray:
if n >= 244:
echo line
break
if ludicArray.isLudic(n + 2, i + 1) and ludicArray.isLudic(n + 6, i + 2):
line.addSep(", ")
line.add "($1, $2, $3)".format(n, n + 2, n + 6)</lang>
 
{{out}}
<pre>The 25 first 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 less or equal to 1000.
 
The 2000th to 2005th ludic numbers are: 21475, 21481, 21487, 21493, 21503, 21511
 
The triplets of ludic numbers less than 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|Objeck}}==
Anonymous user