編寫一個算法來判斷一個數 n 是不是快樂數。
「快樂數」定義爲:對於一個正整數,每一次將該數替換爲它每個位置上的數字的平方和,然後重複這個過程直到這個數變爲 1,也可能是 無限循環 但始終變不到 1。如果 可以變爲 1,那麼這個數就是快樂數。
如果 n 是快樂數就返回 True ;不是,則返回 False 。
示例:
輸入:19
輸出:true
解釋:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
true
思路:通過計算可知,當個位數位1和7時,是快樂數
通過循環判斷數是否大於10,小於10退出,在循環體內將數字每位分開然後相加,如果分到最高位,就進行一次判斷,判斷是否等於1,等於1返回true,並且更新數字爲相加後數字,如果相加後數字小於10,判斷是否爲1或7,如果是1或7,返回true,否則返回false
代碼:
public:
bool isHappy(int n) {
int sum=0,t=0,t2=n;
while(t2>=10)
{
if(n==0)
{
if(sum==1) return true;
n=sum;
t2=sum;
sum=0;
}
t=n%10;
n/=10;
sum+=t*t;
}
if(t2==1||t2==7) return true;
return false;
}