对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程,
如果数字变成了1,这个数就是快乐数,如果无限循环始终变不到1,这个数就不是快乐数。
高内聚(只做好一件事情),低耦合(不要写高耦合代码)
1002 ---> 5 ---> 25 ---> 29 ---> 85 ---> 89 ---> 145 ---> 42 ---> 20 ---> 4 ---> 16 ---> 37 ---> 58 ---> 89
132 2 => 13 3 => 1
1003 ---> 10 ---> 1
1009 ---> 82 ---> 68 ---> 100 ---> 1
// 1. 通过循环不断的去判断 不确定循环多少次 只能用while
// 2. 如果 循环过程中遇到4 或者 1 不用继续判断了 遇到4 一定不是
// 遇到1 循环结束
// 3.需要取每个数字的平方 每次取一个数字的个位 temp
// 132 第一次 2 剩下 13 第二次 3 剩下1 第三次1 剩下 0
// 需要一个变量来存 132 13 1
// 4.我们需要一个变量来存放每个数字的平方 newNum
// 注意问题 newNum 如果不是1 并且 4 需要重新判断 也就是 newNum归零
function isHappyNumber(num){
var newNum,temp; //准备一个变量存放临时数字
// 132 变量第一次存132 第二次存 13 第三次存 1 0
while(num != 4 && num !=1){
temp = num; //
newNum = 0;
while(temp>0){
newNum += Math.pow(temp%10,2);
temp = parseInt(temp/10);
}
num = newNum;
}
return num == 1; // 一定是布尔类型
}