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.
给定一个正整数n,用n的各个位的平方和迭代n。最终会得到平方和为1或者无限循环。这个过程以1结尾的数字是快乐的数字。
例如:
n = 19;
n = 1^2+9^2 = 82
n = 8^2+2^2 = 68
n = 6^2+8^2 = 100
n = 1^2+0^6+0^2 = 1
则19就是快乐数。
解题思路:
想要判断任意一个正整数是不是happy数,首先要算出这个数的平方和;
function digitSquareSum(n){
var sum = 0, m = 0;
while(n!=0){
m = n % 10;
sum += m*m
n = parseInt(n/10);
}
return sum;
}
再判断这个数的平方和是不是为1,等于1则是happy数;不是则继续执行计算平方和这一过程,但是首先要判断这个数的平方和是不是在循环,即之前出现过。
var isHappy = function(n){
if(n==1){ return true; }
var obj = {};
while(n != 1){
n = digitSquareSum(n);
if(n==1){
return true;
}else if(obj.hasOwnProperty(n)){
return false;
}else{
obj[n] = true;
}
}
}