How to resolve the algorithm Ludic numbers step by step in the FreeBASIC programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Ludic numbers step by step in the FreeBASIC programming language
Table of Contents
Problem Statement
Ludic numbers are related to prime numbers as they are generated by a sieve quite like the Sieve of Eratosthenes is used to generate prime numbers. The first ludic number is 1. To generate succeeding ludic numbers create an array of increasing integers starting from 2. (Loop)
Show all triplets of ludic numbers < 250.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Ludic numbers step by step in the FreeBASIC programming language
Source code in the freebasic programming language
' 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
You may also check:How to resolve the algorithm Pangram checker step by step in the 11l programming language
You may also check:How to resolve the algorithm Random number generator (included) step by step in the Déjà Vu programming language
You may also check:How to resolve the algorithm Ternary logic step by step in the Wren programming language
You may also check:How to resolve the algorithm Array concatenation step by step in the AArch64 Assembly programming language
You may also check:How to resolve the algorithm Mandelbrot set step by step in the Spin programming language