为什么这个Python程序没有打印出10000以内的剩余阿姆斯壮数?它只打印到407。

0 投票
1 回答
40 浏览
提问于 2025-04-14 18:14

我刚接触Python,下面是我的代码,但它只打印出1、153、370、371和407这几个数字。

def checkArmStrong(num):
    sum = 0
    temp = num
    while temp > 0:
        rem = temp % 10
        sum += rem ** 3
        temp //= 10
    return sum == num


for x in range(1, 10000):
    if checkArmStrong(x):
        print(x)

1 个回答

3

你需要调整一下计算中的幂值,现在它总是3,这样只适用于三位数的数字,但对于位数更多或更少的数字就不对了。

阿姆斯特朗数是指一个数字等于它的每一位数字的和,每一位数字都要根据数字的位数进行幂运算。比如,对于一个两位数,幂值需要是2;对于三位数,幂值需要是3,以此类推。

你可以这样修正你的计算:

def checkArmStrong(num):
    sum = 0
    temp = num
    num_digits = len(str(num))
    while temp > 0:
        rem = temp % 10
        sum += rem ** num_digits
        temp //= 10
    return sum == num

撰写回答