快乐数 (lintcode:happy-number)

2018-02-20  本文已影响0人  v1coder

写一个算法来判断一个数是不是"快乐数"。

一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为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

上一篇下一篇

猜你喜欢

热点阅读