def problem_44(): # upper limit determined experimentally. Haven't found an analytical way to determine it pentagonals = list(pentagonal_numbers(count=3000)) candidates = list() for a in pentagonals: for b in pentagonals: if a == b: continue if is_pentagonal(abs(a - b)) and is_pentagonal(a + b): # the first such pair we find should be smallest difference, so we can finish print(abs(a - b)) return
def problem_45(): # We can ignore the triangle number aspect of the problem altogether, since all hexagonal # numbers are also triangular numbers # get an iterator for hexagonal numbers, and skip them up to 40755, since we want to identify # a number after that point hexagonals = hexagonal_numbers() while next(hexagonals) < 40755: pass for n in hexagonals: if is_pentagonal(n): print(n) break