題目:
寫一個算法來判斷一個數是不是"快樂數"。
一個數是不是快樂是這么定義的:對於一個正整數,每一次將該數替換為他每個位置上的數字的平方和,然后重復這個過程直到這個數變為1,或是無限循環但始終變不到1。如果可以變為1,那么這個數就是快樂數。
樣例:
19 就是一個快樂數。
1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1
答案:
一個不是【快樂數】的數字在進行每個位置上的數字平方和計算時會得到4這個值。
代碼:

1 class Solution { 2 3 public: 4 /** 5 * @param n an integer 6 * @return true if this is a happy number or false 7 */ 8 bool isHappy(int n) { 9 // Write your code here 10 int sum = n; 11 12 while(true) 13 { 14 sum = numSum(sum); 15 if(sum == 4) 16 { 17 break; 18 } 19 20 if(sum == 1) 21 { 22 return true; 23 } 24 } 25 26 27 return false; 28 } 29 30 int numSum(int n) 31 { 32 int sum = 0; 33 int x; 34 while(n != 0) 35 { 36 x = n % 10; 37 n = n /10; 38 sum += x * x; 39 } 40 41 return sum; 42 } 43 };