题目:给定一个数n,如果是快乐数,输出true,否则输出false。
扩展:快乐数——①将原数每一位求平方,求和得到新的数,②如果新的数是1就是快乐数,否则对新数重复步骤①,直到求出1。注意:如果不是快乐数就会一直循环。
范围:n:[1, 2^32-1]
分析:①如果不是1,就要求每位的平方和;②用数组来存储原数以及每次求的数,如果有重复就返回false。
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
// 声明一个数组,用来存
let arr = [];
arr.push(n);
while(n>1){
let tem = n;
let count = 0;
while(tem>0){
count += (tem%10)*(tem%10);
// javascript里面只有number量,所以tem/10是小数
// 因此要用到Math.floor()函数向下取整
tem =Math.floor(tem/10);
}
if(arr.indexOf(count)==-1){
arr.push(count);
n = count;
}
else return false;
}
return true;
};
总结:①JavaScript里面只有number量,所以整数除以整数可能会得到小数结果,要求向下取整的值就要用到函数Math.floor();②快乐数很快乐,但求快乐数一点也不快乐。