1、定义
- 对于一个 正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程指导这个数变为 1,也可以能是 无限循环 但始终变不到 1。
- 如果 可以变为 1,那么这个数就是快乐数。
2、示例
输入整数:19
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
输出结果:true
3、实现
public class Test {
public static void main(String[] args) {
isHappyNumber(19);
}
public static boolean isHappyNumber(Integer number){
System.out.println("输入整数:" + number);
if(number < 0){
System.out.println("输出结果:false");
return false;
}
if(number == 1){
System.out.println("输出结果:true");
return true;
}
Set<Integer> existNumber = new HashSet<>();
while (number != 1){
if(existNumber.contains(number)){
System.out.println("整数重复:" + number);
System.out.println("输出结果:false");
return false;
}
existNumber.add(number);
String numberStr = number + "";
char[] strCharArray = numberStr.toCharArray();
int sum = 0;
String log = "";
for(int i = 0; i< strCharArray.length; i++){
Integer n = Integer.parseInt(strCharArray[i] + "");
log += " + " + n + "^2";
sum += n * n;
}
log += " = " + sum;
System.out.println(log.substring(3,log.length()));
number = sum;
}
System.out.println("输出结果:true");
return true;
}
}
4、测试
4.1、示例一
输入整数:18
1^2 + 8^2 = 65
6^2 + 5^2 = 61
6^2 + 1^2 = 37
3^2 + 7^2 = 58
5^2 + 8^2 = 89
8^2 + 9^2 = 145
1^2 + 4^2 + 5^2 = 42
4^2 + 2^2 = 20
2^2 + 0^2 = 4
4^2 = 16
1^2 + 6^2 = 37
整数重复:37
输出结果:false
4.2、示例二
输入整数:1818
1^2 + 8^2 + 1^2 + 8^2 = 130
1^2 + 3^2 + 0^2 = 10
1^2 + 0^2 = 1
输出结果:true
实践是检验真理的唯一标准,一键送三连关注不迷路。