ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

快乐数

2019-09-27 09:56:35  阅读:270  来源: 互联网

标签:数字 平方和 快乐 str 各数 1000


快乐的数字

描述

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

  

标签:数字,平方和,快乐,str,各数,1000
来源: https://www.cnblogs.com/wangyongfengxiaokeai/p/11595558.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有