// 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))
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎