zoukankan      html  css  js  c++  java
  • 快乐数

    快乐的数字

    描述

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

      

  • 相关阅读:
    最全面的iOS和Mac开源项目和第三方库汇总
    15 个 Android 通用流行框架大全
    Android中常用的优秀开源框架
    iOS中拉伸图片的几种方式
    iOS View自定义窍门——UIButton实现上显示图片,下显示文字
    Java Queue的使用
    java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)
    android开发音乐播放器--Genres和Art album的获取
    一个神奇的控件——Android CoordinatorLayout与Behavior使用指南
    在CodeBlocks 开发环境中配置使用OpenCV (ubuntu系统)
  • 原文地址:https://www.cnblogs.com/yizhixiang/p/11595558.html
Copyright © 2011-2022 走看看