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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值