写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
样例:19 就是一个快乐数:19->82->68->100->1
思路:
对于非快乐数,如61,会有如下的循环过程:61->37->58->89->145->42->20->4->16->37
非快乐数最后会进入序列 4->16->37->58->89->145->42->20 的死循环
代码:
def isHappy(n):
result = 0
while result != 1 and result != 4:
result = 0
n = str(n)
for i in n:
result = int(i)**2 + result
n = result
if result == 1:
return True
return False
n = 61
print isHappy(n)
lintcode 原题
思路的 出处
20180220