Advertisement
TizzyT

ProjectEuler_12 -TizzyT

Jan 10th, 2015
1,031
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 0.97 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement