快乐数

Posted wangyongfengxiaokeai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快乐数相关的知识,希望对你有一定的参考价值。

快乐的数字

描述

编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于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‘)

  

以上是关于快乐数的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第六天 | 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和

代码随想录算法训练营第六天 | 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和

202哈希表-快乐数

202. 快乐数

lintcode:快乐数

LeetCode 202. 快乐数