解题要点:
通过列举可发现规律:所有不快乐数的数位平方和计算,最终都会进入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 → ··· 的循环中。
所以只要某轮转换结果sum为以上8个数字中的任意一个数字,都会进入循环,即可判断该数不是快乐数。
代码实现:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return bool布尔型 */ public boolean happynum (int n) { while (true) { int sum = 0; //计算本轮转换的结果 while (n != 0) { int temp = n % 10; sum += temp * temp; n /= 10; } //是快乐数 if (sum == 1) { return true; } //不是快乐数 else if (sum == 4 || sum == 16 || sum == 37 || sum == 58 || sum == 89 || sum == 145 || sum == 42 || sum == 20) { return false; } //尚且无法判断,继续下一轮转换 else { n = sum; } } } }