limit = 500000 triangle = set([ int(n*(n+1)/2) for n in range(1, limit) ]) pentagonal = set([ int(n*(2*n-1)) for n in range(1, limit) ]) hexagonal = set([ int(n*(3*n-1)/2) for n in range(1, limit) ]) result = triangle & pentagonal & hexagonal for i in result: print i