今天我看到了一个有趣的任务。制作一个输出所有"自恋数字的程序" (所有数字都被提升到3的幂)。我的程序有这段代码
for number in range(1, 408):
result = 0
for digit in str(number):
result += int(digit) ** 3
if result == number:
print(number)
输出
1
153
370
370
371
407
为什么370出现两次?
答案 0 :(得分:0)
您需要检查号码中每个数字后是否result==number
。您可能希望在外部for
循环中进行此检查。事实上,它看到370 = 3 ** 3 + 7 ** 3,但它也是3 ** 3 + 7 ** 3 + 0 ** 3,所以它们都印在这两次迭代上
答案 1 :(得分:0)
你应该取消在每个数字后面运行的最后一个react-bootstrap
语句:
if
正如另一个答案所指出的,如果数字与尾随0匹配,则可以给出错误的重复。但是,如果存在一个左X位数等于它的数字,但是误报还存在一个额外的危险,但其总数不是。
答案 2 :(得分:0)
我已经做了类似的事情来解决问题:
import math;
def narcissistic( n ):
DecimalPlaces = 0 if n == 0 else math.floor(1 + math.log10(n))
soma = 0
digit = 0
NarcissisticSum = 0
i = 0
for i in range(1,DecimalPlaces):
digit = int((n % 10**i - digit) / (10**(i-1)))
NarcissisticSum += digit ** (DecimalPlaces)
lastDigit = int((n - soma) / (10**i))
NarcissisticSum += lastDigit ** (DecimalPlaces)
return NarcissisticSum == n