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
转载于:https://www.cnblogs.com/start1225/p/10012640.html
Java判断一个数是不是快乐数相关推荐
- JAVA判断一个数是否为质数
JAVA判断一个数是否为质数 输入一个正整数N,判断该数是不是质数,如果是质数输出"N是一个质数",否则输出"N不是质数". 提示:质数的含义:除了1和它本身不 ...
- 汇编:怎么判断一个数是立即数
什么是立即数: 立即数通常是指在 立即寻址方式 指令中给出的数,立即数是一个符号常量. 底层原理: 怎么判断一个数是不是立即数: 首先我们要通过判断我们能不能通过这个数,找到一个0-255之间的数,然 ...
- java 如何判断余数_用java判断一个数是不是回文数!
哈喽大家好,这里是Java小白成长记! 昨天分享了怎么来判断一个数字的奇偶性,其中用到了if选择语句和求余运算,虽然都不是很难的知识点,但是也不可能分享一次就不管了,所以今天继续分享一个和它俩有关的代 ...
- java判断一个数是否是回文数_java编写判断是否是回文数
一个五位数,要你用java编写程序判断它是不是回文数你知道代码是怎样的吗?下面给大家分享的就是这方面的一道java编程题目,一起来看看题目以及解题方法吧. 一.题目 下面是具体的题目,大家要详细看看哦 ...
- Java判断一个数是不是素数
[java] view plaincopy import java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 publi ...
- java判断字符个数_使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. 1 char[] c =str.toCharArray();2 f ...
- 用JAVA判断一个数是否为素数(质数)
素数(prime number)又称质数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数. 有时经常遇到用java判断素数的问题,为大家贴上怎么用java判断出一 ...
- java 判断一个数是不是素数
1.素数就是只能被1和自身整除的数(任何数都能被1整除,这里就不做过多解说了) 2.分析:输入一个数判断是不是素数 比如:7 这里可以写一个循环,除了7以外判断一下其他小于7的数能不能被整除,如果还能 ...
- Java判断一个数是否是回文数
文章目录 1.题目解析 2.举例说明 3.代码实例 1.题目解析 回文数是指正序(从左到右),倒序(从右到左)读都是一样的整数 2.举例说明 121.11211是回文数 -123.123不是回文数 3 ...
最新文章
- 2018年,BAT在人工智能领域交出哪些答卷?
- atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o...
- Android 从零开始打造异步处理框架
- PLSQL Developer中几个功能
- 手把手玩转win8开发系列课程(2)
- php试卷A高质量含答案,php试卷A高质量含答案
- sqli-labs(24)
- Mydumper 多线程备份工具
- 2、pip2.7安装Ansible
- python3之环境搭建以及基础语法
- Centos7安装Caffe教程
- 苹果手机 计算机 错误,苹果手机的计算器连1+2+3都算不对!原因太尴尬!
- 单元格下拉全选快捷键_复制全选快捷键是什么
- 医学应用计算机答案,医学计算机应用试题及答案大全02.doc
- U²-Net:使用显著性物体检测来生成真实的铅笔肖像画
- 使用NoteExpress引入参考文献
- 抖音电脑版怎么自动播放视频?
- MySql连接不上问题
- react 前端实现打印发票/图片
- npm ERR! code 128npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects l
热门文章
- Codeforces Round #192 (Div. 1) A. Purification 贪心
- ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already
- 丹麦IQ145满分全部完美解谜(zz)
- LeetCode 5352. 生成每种字符都是奇数个的字符串
- win10python3.6.3安装_Win10Python3.6安装impyla
- python 计算器 tkinter_python -Tkinter 实现一个小计算器功能
- APP测试之Monkey压力测试(一)
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌2.77%
- SAP License:结算金额大于可支配金额问题应对
- 【转载】Linux安装nginx