码迷,mamicode.com
首页 > 其他好文 > 详细

快乐数

时间:2019-09-27 10:50:47      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:编写   重复   长度   描述   ==   计算过程   range   NPU   als   

快乐的数字

描述

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

  

快乐数

标签:编写   重复   长度   描述   ==   计算过程   range   NPU   als   

原文地址:https://www.cnblogs.com/wangyongfengxiaokeai/p/11595558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!