'''
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