The following iterative sequence is defined for the set of positive integers:

n → n/2 (n is even)

n → 3n + 1 (n is odd)Using the rule above and starting with 13, we generate the following sequence:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one million.

**Solution:**

`Function Prob014() As Long`

Prob014 = 0

Dim NumWithLargestChain As Long = 0

Dim ChainCount As Long = 0

For StartNumber As Long = 999999 To 1 Step -1

Dim tmpNum As Long = StartNumber

Dim tmpCount As Long = 0

Do

tmpCount += 1

If tmpCount > ChainCount Then

ChainCount = tmpCount

NumWithLargestChain = StartNumber

End If

If tmpNum = 1 Then Exit Do

If tmpNum Mod 2 = 0 Then

tmpNum = tmpNum / 2

Else

tmpNum = (tmpNum * 3) + 1

End If

Loop

Next

Return NumWithLargestChain

End Function

**Summary:**

Thankfully, this was a lot easier than the previous problem I did. I skipped problem 12 and 13, but I’ll probably come back to them at some point. Problem 12 dealt with triangle numbers, which I’m not really familiar with. Problem 13 dealt with adding up a hundred 50-digit numbers, which seems like it would be easy, but I either would need a crazy-big numeric datatype or I’d need to come up with a new way to add the stuff up through some other fashion.