美文网首页
快乐数 (lintcode:happy-number)

快乐数 (lintcode:happy-number)

作者: v1coder | 来源:发表于2018-02-20 13:07 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:快乐数 (lintcode:happy-number)

          本文链接:https://www.haomeiwen.com/subject/gokgtftx.html