解题要点:
通过列举可发现规律:所有不快乐数的数位平方和计算,最终都会进入 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;
}
}
}
}

京公网安备 11010502036488号