解題思路:把十位數或百位數拆成個位數進行平方後加
進行迴圈,若最後結果是1,回傳true,
若無法得到1,並且陷入無限迴圈,回傳false
題目的範例2就是陷入無限迴圈的狀況,輸入2,數值變化如下:
2,4,16,37,36,126,41,17,50,25,29,85,89,145,50
因此得到89或145時,就代表陷入無限迴圈,可以回傳false
int Sum(int n)
{
int x,sum=0;
while(n){
x=n%10;
sum+=pow(x,2);
n=n/10;
}
return sum;
}
bool isHappy(int n) {
int result=n;
while(1)
{
result=Sum(result);
if(result==1)return true;
if(result==89)return false;
}
}