//
// Highly divisible triangular number
//
// The sequence of triangle numbers is generated by adding the natural numbers.
// So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first
// ten terms would be:
//
// 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
//
// Let us list the factors of the first seven triangle numbers:
//
// 1: 1
// 3: 1, 3
// 6: 1, 2, 3, 6
// 10: 1, 2, 5, 10
// 15: 1, 3, 5, 15
// 21: 1, 3, 7, 21
// 28: 1, 2, 4, 7, 14, 28
//
// We can see that 28 is the first triangle number to have over five divisors.
//
// What is the value of the first triangle number to have over five hundred divisors?
//

var numDivisors = function (n) {
  var d = 0
  var limit = Math.floor(Math.sqrt(n))
  for (var i = 1; i <= limit; i++) {
    d += n % i === 0 ? 2 : 0
  }
  return d
}

// NOTE: by the wording of the problem, we are checking for > divisors, not >= divisors.
module.exports = function (divisors) {
  var t = 0
  var i = 1
  while (numDivisors(t) < divisors) {
    t += i
    i++
  }
  return t
}

module.exports(200)

//
// Highly divisible triangular number
//
// The sequence of triangle numbers is generated by adding the natural numbers.
// So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first
// ten terms would be:
//
// 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
//
// Let us list the factors of the first seven triangle numbers:
//
// 1: 1
// 3: 1, 3
// 6: 1, 2, 3, 6
// 10: 1, 2, 5, 10
// 15: 1, 3, 5, 15
// 21: 1, 3, 7, 21
// 28: 1, 2, 4, 7, 14, 28
//
// We can see that 28 is the first triangle number to have over five divisors.
//
// What is the value of the first triangle number to have over five hundred divisors?
//

var numDivisors = function (n) {
  var d = 0
  var limit = Math.floor(Math.sqrt(n))
  for (var i = 1; i <= limit; i++) {
    d += n % i === 0 ? 2 : 0
  }
  return d
}

// NOTE: by the wording of the problem, we are checking for > divisors, not >= divisors.
module.exports = function (divisors) {
  var t = 0
  var i = 1
  while (numDivisors(t) < divisors) {
    t += i
    i++
  }
  return t
}

Fix derp.