Repository navigation
Expand file tree
/
Copy pathhighlyDiviTriangularNum_p12.py
More file actions
82 lines (63 loc) · 1.75 KB
/
Copy pathhighlyDiviTriangularNum_p12.py
File metadata and controls
82 lines (63 loc) · 1.75 KB
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 4 19:59:04 2022
@author: INDHRNA
"""
"""
Problem 12
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 time import time
start = time()
import numpy as np
# import pandas as pd
from numpy import arange, mod
from pandas import Series
import sympy as sp
#%%%
import math
def divisorGenerator(n):
large_divisors = []
for i in range(1, int(math.sqrt(n) + 1)):
if n % i == 0:
yield i
if i*i != n:
large_divisors.append(n / i)
for divisor in reversed(large_divisors):
yield divisor
return large_divisors
#%%%
if __name__ == '__main__':
total = 0
for big in arange(1,10000):
total += big
# if big ==2:break
numb = total
lis = []
# numbers = arange(1,numb+1)
# for num in numbers:
# if numb%num == 0:
# lis.append(num)
# print(numb%num ,num)
lis = list(divisorGenerator(numb))
lisLen = len(lis)
if lisLen >500:
print(big)
if not lisLen%2==0:
liss = lis[:-1]
print(liss)
else:
pass
print(lis)
break