def problem6(n): """ Return the difference between square of sum of first n natural and sum of squares of first n natural numbers. >>> problem6(10) 2640 >>> problem6(100) 25164150 """ sum_numbers = lib.sum_frist_N_numbers(n) sum_squres = lib.sum_squares_first_N_numbers(n) return (sum_numbers*sum_numbers) - sum_squres
def problem12(n): """ return first triangle number to have over n divisors. where triangle number is the sum of first natural numbers. >>> problem12(500) 76576500 >>> problem12(5) 28 """ divisors, count = 1, 1 while divisors < n: count += 1 triangle = lib.sum_frist_N_numbers(count) primes_dict = lib.prime_factors(triangle) divisors = lib.product(map(lib.increment, primes_dict.values())) return triangle