document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Module TriangularNbr \'My solution to Project Euler Problem 12
  2.     Sub Main()
  3.         Console.WriteLine(TriangularIndex(500))
  4.     End Sub
  5.     Private Function TriangularIndex(ByVal limit As UInteger) As ULong
  6.         Dim n As ULong = 1
  7.         Dim lnum = NbrOfDivisors(n), rnum As ULong = NbrOfDivisors(n + 1)
  8.         While lnum * rnum < limit
  9.             n += 1 : lnum = rnum : rnum = NbrOfDivisors(n + 1)
  10.         End While : Return (n * (n + 1)) / 2
  11.     End Function
  12.     Private Function NbrOfDivisors(ByVal n As UInteger) As ULong
  13.         Dim count = 0, p As UInteger = 3
  14.         NbrOfDivisors = 1
  15.         If n Mod 2 = 0 Then n /= 2
  16.         While n Mod 2 = 0 : count += 1 : n /= 2 : End While
  17.         NbrOfDivisors = NbrOfDivisors * (count + 1)
  18.         While Not n = 1
  19.             count = 0
  20.             While n Mod p = 0 : count += 1 : n /= p : End While
  21.             NbrOfDivisors = NbrOfDivisors * (count + 1) : p += 2
  22.         End While
  23.     End Function
  24. End Module
');