<gh_stars>0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
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
36: 1, 2, 3, 4, 6, 9, 12, 18, 36

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?

http://stackoverflow.com/questions/110344/algorithm-to-calculate-the-number-of-divisors-of-a-given-number
"""

def divisors(n):
	d = 2
	limit = n
	k = 2
	while k < limit:
		if n % k == 0:
			limit = n // k
			if limit != k:
				d += 1
			d += 1
		k += 1
	return d

def brute(n):
	t = 1
	i = 2
	while divisors(t) <= n:
		t += i
		i += 1 
	return t

def triangles(m, start=0, i=0):
	t = [start]
	i += 1
	for k in range(m):
		t.append(t[-1] + i)
		i += 1
	return i - 1, t[1:]

def main():
	print(brute(500))

if __name__ == '__main__':
	main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
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
36: 1, 2, 3, 4, 6, 9, 12, 18, 36

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?

http://stackoverflow.com/questions/110344/algorithm-to-calculate-the-number-of-divisors-of-a-given-number
"""

def divisors(n):
	d = 2
	limit = n
	k = 2
	while k < limit:
		if n % k == 0:
			limit = n // k
			if limit != k:
				d += 1
			d += 1
		k += 1
	return d

def brute(n):
	t = 1
	i = 2
	while divisors(t) <= n:
		t += i
		i += 1 
	return t

def triangles(m, start=0, i=0):
	t = [start]
	i += 1
	for k in range(m):
		t.append(t[-1] + i)
		i += 1
	return i - 1, t[1:]

def main():
	print(brute(500))

if __name__ == '__main__':
	main()
#!/usr/bin/env python # -*- coding: utf-8 -*- 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 36: 1, 2, 3, 4, 6, 9, 12, 18, 36  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?  http://stackoverflow.com/questions/110344/algorithm-to-calculate-the-number-of-divisors-of-a-given-number