Java教程

202. 快乐数

本文主要是介绍202. 快乐数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
总结:
	数学不够代码来凑
	他既然让我来看是不是快乐数(能否趋近于1)
	那么肯定就有别的情况
	你就拿个数循环试一下好吧
'''
    ps:看看这题能不能让我快乐
    好吧看来是可以了
'''

def fun1(n):
    '''
        首先这是一道带有数学标签的题目
        我的只管想法是
            有些数字会趋近于1
            有些会趋近于无穷大
            还会有其他可能吗?
        如何判断会趋近于无穷大?
            假设有一个一位数字 9  得到81 再得到65  61 37 58 89 145 42 20 4 16 37 58
            假设有两个数字99 得到162 41
            假设有三个数字999 得到243
            假设有四个数字9999 得到324
            假设有五位数字99999 得到 405
            假设有六位数字999999得到 486

            我尝试了这么多,都趋近于三位数,而一旦到三位数一定会比999小,那么一定会得到小于243的数字所以可以
            直到不会趋近于无穷大,会不断地递减
        然后又不可能每一个数字都是快乐数,那么我写一下计算9的循环看一看
    :return:
    '''
    while n!=1:
        sum_=0
        while n>0:
            sum_+=(n%10)**2
            n=n//10
        n=sum_
        print(n)


def fun2(n):
    '''
        上面算了一下9
        发现会出现循环问题
        所以是趋近于1或者循环
    :param n:
    :return:
    '''
    dic={}
    while n!=1 and (n not in dic):
        dic[n]=0
        sum_ = 0
        while n > 0:
            sum_ += (n % 10) ** 2
            n = n // 10
        n = sum_

    if n==1:
        return True
    else:
        return False
def fun2(n):
        def paobu(n):
            sum_ = 0
            while n > 0:
                sum_ += (n % 10) ** 2
                n = n // 10
            n = sum_
            return n
        slow=n
        quick=paobu(n)
        while quick!=1 and quick!=slow:
            slow=paobu(slow)
            quick=paobu(paobu(quick))
        if quick==1:
            return True
        else:
            return False
这篇关于202. 快乐数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!