自恋数字

时间:2016-10-04 17:25:20

标签: python python-3.x

今天我看到了一个有趣的任务。制作一个输出所有"自恋数字的程序" (所有数字都被提升到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出现两次?

3 个答案:

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