什么时候停止数字不是一个快乐的数字

nav*_*yad 0 python algorithm

幸福的数字由以下过程定义.从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于1.

但是当数字不是一个快乐的数字时,它会在一个不包含1的循环中无休止地循环.

我已经编写了python中的happy number问题,但问题是当一个数字不满意时,那我怎么能停止迭代循环.因为它不会以1结束并且会继续重复.

def happynumber(number):

while(number!=1):
    numberstr = str(number) #converting a number to string
    index=0 
    sum=0
    while(index!=len(numberstr)):
        sum = sum + int(numberstr[index])*int(numberstr[index])
        index = index+1
    print sum

    number = sum
return number
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 11

您可以使用恒定的内存量检测不满意的数字.根据维基百科,对于任何正整数起点,序列将终止于一,或永远循环4, 16, 37, 58, 89, 145, 42, 20, 4.由于不存在其他循环,因此很容易测试不快乐.

def isHappy(x):
    while True:
        if x == 1:
            return True
        if x == 4:
            return False
        x = nextNumberInSequence(x)
Run Code Online (Sandbox Code Playgroud)


cod*_*box 7

你必须记录你到目前为止在序列中产生的所有数字,如果其中一个数字出现,你知道你有一个永远不会达到1的循环.一个集合可能是一个不错的选择.存储号码的地方.