阿姆斯特朗数python

时间:2020-09-06 05:46:25

标签: python python-3.x python-2.7 numbers

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个答案。但是当我在数学上检查阿姆斯壮的数字时,答案是错误的。我想在数学上更正我的代码,所以告诉我我的错误?

1 个答案:

答案 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

所以答案是正确的。