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