快乐的数字
描述
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是一个快乐的数字,计算过程如下:
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
当输入时快乐的数字时,输出True,否则输出False。
分析题目可知:即将一个数拆开然后计算各数平方和,再拆开计算各数平方和,再拆开计算各数平方和,当最合能得出1则满足快乐数
也就涉及一个循环:拆开计算各数平方和
将此步定义为一个方法
def happy(str)://传入数str s = 0 //存储平方和 for i in range(0,len(str))://根据str长度确定循环次数 s+=int(str[i])**2 //将各位数的平方和累加 return s
问题:如若一个数不是快乐数,结果将永远得不到1,并且使程序一直运行
解决:设置计算次数为1000次,即计算1000次之后还没有得到1,则认为该数不是快乐数
代码如下:
i = input() //输入一个数
for m in range(0,1000)://循环1000次 i=str(happy(i)) //计算一次拆开后各数的平方和 if(i == '1'): //若结果i=1,则输出True print('True') break if(i != '1'): //若结果i不为1,则以i为新数来进行下一次循环
print('False')