Que:打印第一个Armstrong编号,范围从1042000到702648265,并在遇到第一个Armstrong编号后立即退出循环。 使用while循环
这是我的代码:
upper = 702648265
lowers=1042000
for num in range (lower, upper + 1):
o= len (str(num))
sum = 0
temp = num
while temp > 0:
x = temp % 10
sum += x ** o
temp //= 10
if num == sum:
print(num)
break
输出:
1741725
我的输出中得到了1741725个答案。但是当我在数学上检查阿姆斯壮的数字时,答案是错误的。我想在数学上更正我的代码,所以告诉我我的错误?
答案 0 :(得分:0)
答案是正确的。但是,您的代码需要更正一点。
您的代码:
upper = 702648265
lowers=1042000
for num in range (lower, upper + 1):
更正的代码:
upper = 702648265
lowers=1042000
for num in range (lowers, upper + 1): #it should be lowers instead of lower
这里o是7。因此,您必须计算每个数字的7的幂。
1 ^ 7 + 7 ^ 7 + 4 ^ 7 + 1 ^ 7 + 7 ^ 7 + 2 ^ 7 + 5 ^ 7
= 1 + 823543 + 16384 + 1 + 823543 + 128 + 78125
= 1741725
所以答案是正确的。