题目描述:
代码:
class Solution {
public:
bool isHappy(int n) {
int temp=n;
int a;
for(int i=1;i<=300;i++){
if(temp==1) return true;
a=0;
while(temp>0){
a+=(temp%10)*(temp%10);
temp=temp/10;
}
temp=a;
}
return false;
}
};
运行结果:
总结:每一次运算后,该整数下降的非常快,整数最多10位,一次运算后最多810,再运算一次后最多两百多,之后也不会超过这么多,因此只要对该数运算不超过300(至于上确界到底是多少,没有试)次后,只要出现了1,就说明该数是快乐数,否则必定出现循环,不是快乐数。