通过以下过程定义一个满意的数字。以任何正整数开头,用数字的平方和代替数字,然后重复该过程,直到数字等于1。
但是,当数字不是快乐数字时,它会在一个不包含1的循环中无限循环。
我已经在python中编码了快乐数字问题,但是问题是当数字不快乐时,那我怎么能停止迭代周期。因为它不会以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
您可以使用固定数量的内存来检测不满意的数字。根据Wikipedia的说法,对于任何正整数起始点,该序列将在1处终止,或在处永远循环4, 16, 37, 58, 89, 145, 42, 20, 4。由于不存在其他循环,因此很容易测试不愉快程度。
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)