def pandigital_products(): res = set() for product in range(1, int(sqrt(123456789))): for multiplicand in range(2, int(sqrt(product))): if product % multiplicand == 0: pandigital_candidate = int(str(product) + str(multiplicand) + str(product / multiplicand)) if is_pandigital(pandigital_candidate, 1, 9): res |= {product} return res
def pandigital_multiples(): for n in range(2, 10): for i in range(1, pow(10, int(floor(9.0 / n)))): pandigit_sum = int(reduce(lambda x, y: x + y, [str(i * j) for j in range(1, n + 1)])) if is_pandigital(pandigit_sum, 1, 9): yield (pandigit_sum, i, n)