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