59 lines
1.1 KiB
Python
59 lines
1.1 KiB
Python
from collections import Counter
|
|
from functools import reduce
|
|
|
|
def find_prime_factors(n):
|
|
factors = []
|
|
|
|
i = 2
|
|
|
|
while i <= n / i:
|
|
if n % i == 0:
|
|
factors.append(i)
|
|
n = int(n / i)
|
|
else:
|
|
i += 1
|
|
|
|
factors.append(n)
|
|
|
|
return factors
|
|
|
|
def find_divisers(num):
|
|
def recurse(tuples, product = 1):
|
|
factor, count = tuples[0]
|
|
|
|
for i in range(0, count + 1):
|
|
if (i != 0):
|
|
product = product * factor
|
|
|
|
if (len(tuples) > 1):
|
|
recurse(tuples[1:], product)
|
|
else:
|
|
result.append(product)
|
|
|
|
factors = find_prime_factors(num)
|
|
|
|
|
|
recurse(list(Counter(factors).items()))
|
|
|
|
result.sort()
|
|
|
|
return result
|
|
|
|
|
|
|
|
for i in range(1, 100000):
|
|
result = reduce(lambda x,y: x + y, list(range(1, i + 1)))
|
|
# divisers = find_divisers(result)
|
|
factors = find_prime_factors(result)
|
|
|
|
total_count = 1
|
|
|
|
for factor, count in Counter(factors).items():
|
|
total_count *= count + 1
|
|
|
|
if (total_count >= 500):
|
|
print(i)
|
|
print(result)
|
|
print(total_count)
|
|
break
|