def problem12(n): i = 0 for t in triangle_number_gen(): i += 1 factors = PrimeMethods.get_prime_factors(t) n_divisors = PrimeMethods.n_factors(factors) if n_divisors > n: return t
def problem21(n): result = 0 for a in xrange(2, n + 1): b = PrimeMethods.sopdf(a, 1) - a a_prime = PrimeMethods.sopdf(b, 1) - b if a == a_prime and a != b: #print((a, b)) result += a return result
def problem12_v2(n): i = 2 counts = [0, 0, 1] while True: t = i * (i + 1) / 2 counts.append(PrimeMethods.n_divisors(i + 1)) n_factors = None if (i & 1) == 0: n_factors = counts[i / 2] * counts[i + 1] else: n_factors = counts[(i + 1) / 2] * counts[i] if n_factors > n: return t i += 1
def is_abundant(n): if n < 12: return False spd = PrimeMethods.sopdf(n, 1) - n return spd > n