How to calculate the Collatz sequence for a range starting from 3 to 10 in VB.NET

1 Answer

0 votes
Imports System

Public Class Program
    Private Shared Function CalcCollatz(ByVal x As Long) As Long
        If (x And 1) <> 0 Then
            Return x * 3 + 1
        End If

        Return x / 2
    End Function

    Private Shared Sub PrintCollatzSequence(ByVal x As Long)
        Console.Write(x & " ")

        While x <> 1
            x = CalcCollatz(x)
            Console.Write(x & " ")
        End While
    End Sub

    Public Shared Sub Main(ByVal args As String())
        For i As Long = 3 To 11 - 1
            PrintCollatzSequence(i)
            Console.WriteLine()
        Next
    End Sub
End Class




' run:
'
' 3 10 5 16 8 4 2 1 
' 4 2 1 
' 5 16 8 4 2 1 
' 6 3 10 5 16 8 4 2 1 
' 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
' 8 4 2 1 
' 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
' 10 5 16 8 4 2 1
'

 



answered Nov 7, 2023 by avibootz
...