def solve(): prevQty = 1 for i in itertools.count(2): qty = product((k if p==2 else k+1) for p,k in factor(i+1)) # qty == number of divisors of i+1 (or of (i+1)//2 when i+1 is even) if qty * prevQty > 500: return i*(i+1)//2 prevQty = qty
def solve(): n = 1 streak = 0 while streak != 4: fctrs = len(list(factor(n))) if fctrs == 4: streak += 1 else: streak = 0 n += 1 return n-4
def solve(): numbers = set() row = [1] for i in xrange(51): for n in row: if all(k < 2 for _,k in factor(n)): numbers.add(n) row2 = list(imap(add, row, [0] + row)) if i % 2 == 1: row2.append(row[-1] * 2) row = row2 return sum(numbers)
def solve(): n = 1 while product(k*2+1 for _,k in factor(n)) // 2 + 1 <= 1000: n += 1 return n