Java判断一个数是不是快乐数

快乐数的定义:
快乐数(happy number)有以下的特性:
在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。

以十进制为例:
2 8 → 2²+8²=68 → 6²+8²=100 → 1²+0²+0²=1
3 2 → 3²+2²=13 → 1²+3²=10 → 1²+0²=1
3 7 → 3²+7²=58 → 5²+8²=89 → 8²+9²=145 → 1²+4²+5²=42 → 4²+2²=20 → 2²+0²=4 → 4²=16 → 1²+6²=37……

因此28和32是快乐数,而在37的计算过程中,37重覆出现,继续计算的结果只会是上述数字的循环,不会出现1,因此37不是快乐数。
不是快乐数的数称为不快乐数(unhappy number),所有不快乐数的数位平方和计算,最後都会进入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。

很明显,这可以用递归思想来求解
如果一个数是1,就是快乐数,如果不是1,就判断这个数是不是 4,16,37... 等等上面出现的那个循环中数,如果是就返回false,否则就继承递归判断。

1 先实现求一个数的各个位的平方和,代码如下:

   public static int sqrt(int n){if(n < 10){return n * n;}int sum = 0;while ( n >= 10){       //如果 n 是两位数int t = n % 10;     //求低位数sum += t * t;       //把低位数的平方累加到sum中n = n / 10;         // n 去掉低位数}sum += n * n;           // n 为1 位数时不满足上面的条件,但这时候需要把它累加到sum中return sum;}

再看 isHappyNumber()方法

    public static boolean isHappyNumber(int number){//下面几条都是递归的退出条件if(number <= 0 ){return false;}if(number == 1){return true;}//4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4if(number == 4 || number == 16 || number == 37 || number == 58|| number == 89 || number == 145 || number == 42 || number == 20){return false;}int result = sqrt(number);if(result == 1){return true;}return isHappyNumber(result);}

测试

System.out.println(isHappyNumber(28));
输出 true

posted on 2018-11-24 16:48 九路313 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/start1225/p/10012640.html

Java判断一个数是不是快乐数相关推荐

  1. JAVA判断一个数是否为质数

    JAVA判断一个数是否为质数 输入一个正整数N,判断该数是不是质数,如果是质数输出"N是一个质数",否则输出"N不是质数". 提示:质数的含义:除了1和它本身不 ...

  2. 汇编:怎么判断一个数是立即数

    什么是立即数: 立即数通常是指在 立即寻址方式 指令中给出的数,立即数是一个符号常量. 底层原理: 怎么判断一个数是不是立即数: 首先我们要通过判断我们能不能通过这个数,找到一个0-255之间的数,然 ...

  3. java 如何判断余数_用java判断一个数是不是回文数!

    哈喽大家好,这里是Java小白成长记! 昨天分享了怎么来判断一个数字的奇偶性,其中用到了if选择语句和求余运算,虽然都不是很难的知识点,但是也不可能分享一次就不管了,所以今天继续分享一个和它俩有关的代 ...

  4. java判断一个数是否是回文数_java编写判断是否是回文数

    一个五位数,要你用java编写程序判断它是不是回文数你知道代码是怎样的吗?下面给大家分享的就是这方面的一道java编程题目,一起来看看题目以及解题方法吧. 一.题目 下面是具体的题目,大家要详细看看哦 ...

  5. Java判断一个数是不是素数

    [java] view plaincopy import java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 publi ...

  6. java判断字符个数_使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. 1 char[] c =str.toCharArray();2 f ...

  7. 用JAVA判断一个数是否为素数(质数)

    素数(prime number)又称质数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数. 有时经常遇到用java判断素数的问题,为大家贴上怎么用java判断出一 ...

  8. java 判断一个数是不是素数

    1.素数就是只能被1和自身整除的数(任何数都能被1整除,这里就不做过多解说了) 2.分析:输入一个数判断是不是素数 比如:7 这里可以写一个循环,除了7以外判断一下其他小于7的数能不能被整除,如果还能 ...

  9. Java判断一个数是否是回文数

    文章目录 1.题目解析 2.举例说明 3.代码实例 1.题目解析 回文数是指正序(从左到右),倒序(从右到左)读都是一样的整数 2.举例说明 121.11211是回文数 -123.123不是回文数 3 ...

最新文章

  1. 2018年,BAT在人工智能领域交出哪些答卷?
  2. atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o...
  3. Android 从零开始打造异步处理框架
  4. PLSQL Developer中几个功能
  5. 手把手玩转win8开发系列课程(2)
  6. php试卷A高质量含答案,php试卷A高质量含答案
  7. sqli-labs(24)
  8. Mydumper 多线程备份工具
  9. 2、pip2.7安装Ansible
  10. python3之环境搭建以及基础语法
  11. Centos7安装Caffe教程
  12. 苹果手机 计算机 错误,苹果手机的计算器连1+2+3都算不对!原因太尴尬!
  13. 单元格下拉全选快捷键_复制全选快捷键是什么
  14. 医学应用计算机答案,医学计算机应用试题及答案大全02.doc
  15. U²-Net:使用显著性物体检测来生成真实的铅笔肖像画
  16. 使用NoteExpress引入参考文献
  17. 抖音电脑版怎么自动播放视频?
  18. MySql连接不上问题
  19. react 前端实现打印发票/图片
  20. npm ERR! code 128npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects l

热门文章

  1. Codeforces Round #192 (Div. 1) A. Purification 贪心
  2. ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address   already
  3. 丹麦IQ145满分全部完美解谜(zz)
  4. LeetCode 5352. 生成每种字符都是奇数个的字符串
  5. win10python3.6.3安装_Win10Python3.6安装impyla
  6. python 计算器 tkinter_python -Tkinter 实现一个小计算器功能
  7. APP测试之Monkey压力测试(一)
  8. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌2.77%
  9. SAP License:结算金额大于可支配金额问题应对
  10. 【转载】Linux安装nginx