总结:
数学不够代码来凑
他既然让我来看是不是快乐数( 能否趋近于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