-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproblem_012.py
More file actions
47 lines (31 loc) · 949 Bytes
/
problem_012.py
File metadata and controls
47 lines (31 loc) · 949 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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
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?
'''
from helpers import factors
def triangle_number():
i = 1
yield(i)
while 1:
i += 1
yield((i * (i + 1)) >> 1)
def result(nb_divisor):
for el in triangle_number():
if len(factors(el)) > nb_divisor:
return el
def main():
return result(500)
if __name__ == '__main__':
print(main())
# 76576500 in 3.66ms