Numbers equal to the sum of powers of its digits, need faster python code

Viewed 197

In Python, create a function finding all integers between 1 and 1.000.000.000, which are equal to the sum of k'th power of its digits for some k.

Example: 4150 = 4^5 + 1^5 + 5^5 + 0^5.

Here is my code working perfect until 1.000.000. However, it becomes so slow for large numbers. I try Numpy but it does not work. Any improvement would be welcome. ^^ (Any library or python function you may use)

def powers(n):
s = []
for number in range(1, 10 ** n):
    number_list = [int(x) for x in str(number)]
    if max(number_list) > 1:
        total = 0
        power = 1
        while total < number:
            total = sum([y ** power for y in number_list])
            if total == number:
                s.append((number, power))
            power += 1
return s
0 Answers
Related