为什么这个Python程序没有打印出10000以内的剩余阿姆斯壮数?它只打印到407。
我刚接触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