for num in range(100, 1000): low = num % 10 mid = num // 10 % 10 high = num // 100 if num == low ** 3 + mid ** 3 + high ** 3: print(num) # 153 # 370 # 371 # 407
以上算法十分浅显易懂,我们也可以通过循环写下通解。
1 2 3 4 5 6 7 8 9 10 11 12
for num in range(100,10000): sum = 0 n = len(str(num)) temp = num while temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 if num == sum: print(num)
1 2 3 4 5 6 7
153 370 371 407 1634 8208 9474
1 2 3 4 5 6 7 8 9 10
lower=int(input("Please input a number: ")) upper=int(input("Please input a number: ")) sum=0 for num in range(lower,upper): l = len(str(num)) for n in str(num): sum=sum+int(n)**l if num==sum: print(num) sum=0