// 0012.go contains some functions to solve ProjectEuler.net's Problem #12 // https://projecteuler.net/problem=12 package main import "fmt" // CountDivisors returns the count of possible divisors of a given number, // including 1 and itself. func CountDivisors(number int) int { count := 0 max := number/2 for i := 1; i < max; i++ { if number%i == 0 { // Increase count by itself + value (number / i) count += 2; // Update max number max = number / i } } // Return count return count } // FirstTriangularNumber returns the first triangular number with more // that the given number of divisors. func FirstTriangularNumber(numDivisors int) int { triangularnumber := 0 count := 0 for i := 1; count <= numDivisors; i++ { // Generate triangular number triangularnumber += i // Update divisor count to divisors in current triangular number count = CountDivisors(triangularnumber) } // Return triangular number return triangularnumber } func main(){ // Display result fmt.Println(FirstTriangularNumber(500)) }