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