編寫乙個演算法來判斷乙個數 n 是不是快樂數。
「快樂數」定義為:對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。
如果 n 是快樂數就返回 true ;不是,則返回 false 。
示例:輸入:19
輸出:true
解釋:12+92
=8282+
22=6862+82
=10012+
02+02=
1
首先明確一點,最大的三位數是 999,每個數字的平方和,即 92+92+92 = 243,從999變成243是變小了,四位數,五位數等等一樣,會越來越小。
怎樣求各數字的平方和,我沒想到簡單的方法,將int轉成stirng,stirng的長度,就是int的位數,再分別取出各位的數字,算平方和。官方的實現,很優雅。
// **很容易理解,不過多解釋
private
intgetsum
(int n)
return sum;
}
是否無限迴圈,可以用快慢指標,也可以用數學的方法,即運算過程中,出現了重複的數字,一定會產生迴圈。
(int n)
return n ==1;
}好了,題目很簡單,官方給的**很優雅,自己沒想到,在這裡記錄下。
python 快樂的數字
編寫乙個演算法來確定乙個數字是否 快樂 快樂的數字按照如下方式確定 從乙個正整數開始,用其每位數的平方之和取代該數,並重複這個過程,直到最後數字要麼收斂等於1且一直等於1,要麼將無休止地迴圈下去且最終不會收斂等於1。能夠最終收斂等於1的數就是快樂的數字。例如 19 就是乙個快樂的數字,計算過程如下 ...
202 快樂數(分離數字的位數)
編寫乙個演算法來判斷乙個數 n 是不是快樂數。快樂數 定義為 對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和。然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果這個過程 結果為 1,那麼這個數就是快樂數。如果 n 是 快樂數 就返回 true 不是,則返回 ...
Python練習題 快樂數字
題目描述 編寫乙個演算法來確定乙個數字是否 快樂 快樂的數字按照如下方式確定 從乙個正整數開始,用其每位數的平方之和取代該數,並重複這個過程,直到最後數字要麼收斂等於1且一直等於1,要麼將無休止地迴圈下去且最終不會收斂等於1。能夠最終收斂等於1的數就是快樂的數字。例如 19是乙個快樂數字,計算過程如...