練習題26-快樂數

編寫一個算法來判斷一個數 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;
    }

練習題25-兩數之和2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章