A12:快乐数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A12:快乐数相关的知识,希望对你有一定的参考价值。
发现快乐数有如下特征:
1、如果一个数“不快乐”,则它计算到后面必然陷入到这个循环里:4, 16, 37, 58, 89, 145, 42, 20, 4, ...
2、对于一个大于243的数字来说,它的下一个数字一定比它小。这是因为一个大于1000的数字,它的下一个数字一定比它小,而对于1000以下最大的数字999,它的下一个数字是243,所以1000以下数字的下一个数字也只可能小于或等于243
写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
样例
19 就是一个快乐数。
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
1 public class Solution { 2 /** 3 * @param n an integer 4 * @return true if this is a happy number or false 5 */ 6 boolean isHappy(int n) { 7 // Write your code here 8 int temp = n; 9 while(true){ 10 temp = getNext(temp); 11 if(temp > 243){ 12 continue; 13 }else if(temp == 4 || temp == 16 || temp == 37 || temp == 58 || temp== 89 || temp == 145 || temp ==42|| temp ==20 || temp ==4){ 14 return false; 15 } 16 if(temp == 1){ 17 return true; 18 } 19 } 20 } 21 22 int getNext(int m){ 23 int result = 0; 24 while(m>0){ 25 result = result + (m%10) * (m % 10); 26 m = m / 10; 27 } 28 return result; 29 } 30 }
以上是关于A12:快乐数的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第六天 | 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和