One of the best ways to get to know a programmer is to see their code. You might not know their favorite hobbies, favorite foods, or favorite football team (trick question, programmers don’t like football. Hehe), but getting a glimpse at how someone goes about solving problems can really be quite helpful.

With that in mind, I’m going to be taking part in ProjectEuler.net. It’s all math-based to one degree or another. I am horrible at math, really. I know enough to get by, but a lot of it I’ve forgotten since being out of school. But, I must admit, I love a figuring out puzzles — especially by programming — so I’m anxious to get started.

If you’d like to follow along, feel free to set up an account on their site and try the stuff out yourself. It can get quite addictive :)

Since I’m going to post code-samples here, I might as well include one of my “helper” routines I ended up using in a couple of solutions. Since a few of the problems involved prime numbers, I made a generic function for allowing me to determine whether a specific number is a prime or not.

I’m sure there are more effective ways of figuring out if a number is a prime, but math was never a subject a particularly excelled at…

`Function IsPrime(ByVal tmpVal As Long) As Boolean`

Dim strVal As String = tmpVal.ToString

```
``` 'If the number ends in 0,2,4,5,6,8 then it's NOT prime (might be a composite)

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "0" Then Return False

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "2" Then Return False

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "4" Then Return False

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "5" Then Return False

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "6" Then Return False

If strVal.Length > 1 AndAlso strVal.Substring(strVal.Length - 1, 1) = "8" Then Return False

'Except for the number 2, if a number is even, it's always composite

If tmpVal <> 2 AndAlso tmpVal Mod 2 = 0 Then Return False

'If a number's digits add up to a number which is divisible by 3, it's composite

Dim tmpDigitSum As Integer = 0

If strVal.Length > 1 Then

For k As Integer = 0 To strVal.Length - 1

tmpDigitSum += strVal.Substring(k, 1)

Next

If tmpDigitSum = 3 Then Return False

End If

'If a number's square root is an integer, it's a composite

If System.Math.Sqrt(tmpVal) = CInt(System.Math.Sqrt(tmpVal)) Then Return False

'If it's not divisible by itself, it's not Prime

If tmpVal Mod tmpVal <> 0 Then Return False

Dim MaxVal As Long = System.Math.Sqrt(tmpVal)

For k As Long = 2 To MaxVal

If tmpVal Mod k = 0 AndAlso k <> 1 Then

Return False

End If

Next

` Return True`

End Function