加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Lettcode_202_Happy Number

发布时间:2020-12-13 20:41:20 所属栏目:PHP教程 来源:网络整理
导读:本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45396585 Write an algorithm to determine if a number is happy. A happy number is a number defined by the following process: Starting with any positi

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45396585


Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer,replace the number by the sum of the squares of its digits,and repeat the process until the number equals 1 (where it will stay),or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

  • 12 + 92 = 82
  • 82 + 22 = 68
  • 62 + 82 = 100
  • 12 + 02 + 02 = 1


思路:

(1)题意为判断给定的整数是不是为1个“快乐的数”,所谓快乐的数需要满足1下几个条件:将该整数的每一个位上的数字的平方相加得到1个新的整数,循环对新的整数进行上述操作,如果最后所得整数收敛于1,则这样的数字为1个“快乐的数”。

(2)首先,判断0肯定不是1个“快乐的数”;其次,对初始数字的每一个位上数的平方相加,循环进行前面的操作;需要注意的是,对可能会出现死循环的数字需要进行判断,需要判断循环的次数,这里通过测试得到循环次数为4,即如果4次循环进程中,每次所得数字中都不收敛于1,则判断该数字不是1个“快乐的数”,否则,则是1个“快乐的数”;最后,对那些循环得到的结果为1的数字,直接返回true,即该数字是1个“快乐的数”。

(3)详情见下方代码。希望本文对你有所帮助。


算法代码实现以下:

/** * @author liqq */ public class HappyNumber { public static boolean isHappy(int n) { if (n == 0) return false; return testhappy(0,n); } private static boolean testhappy(int number,int n) { int sum = n; int add = 0; boolean hasone = false; while (sum != 0) { int square = (sum % 10) * (sum % 10); add += square; sum = sum / 10; if (sum % 10 == 1) { hasone = true; } } number++; int test = add; while (test != 0) { if (test % 10 == 1) { hasone = true; } test = test / 10; } if (hasone == false && number > 4) return false; if (add != 1 || add % 10 != 1) { boolean istrue = testhappy(number,add); if (istrue) return true; } else { return true; } return false; } }


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读