最后更新时间: 2019年3月22日10:06:37
package com.crossoverjie.algorithm;
import java.util.HashSet;
import java.util.Set;
/**
- Function: 判断一个数字是否为快乐数字 19 就是快乐数字 11就不是快乐数字
- 19
- 11+99=82
- 88+22=68
- 66+88=100
- 11+00+00=1
- 11
- 11+11=2
- 2*2=4
- 4*4=16
- 11+66=37
- 33+77=58
- 55+88=89
- 88+99=145
- 11+44+5*5=42
- 44+22=20
- 22+00=2
* - 这里结果 11+11=2 和 22+00=2 重复,所以不是快乐数字
*/
public class HappyNum {
/**
* 判断一个数字是否为快乐数字
* @param number
* @return
*/
public boolean isHappy(int number) {
Set<Integer> set = new HashSet<>(30);
while (number != 1) {
int sum = 0;
while (number > 0) {
//计算当前值的每位数的平方 相加的和 在放入set中,如果存在相同的就认为不是 happy数字
sum += (number % 10) * (number % 10);
number = number / 10;
}
if (set.contains(sum)) {
return false;
} else {
set.add(sum);
}
number = sum;
}
return true;
}
public static void main(String[] args) {
int num = 345;
int i = num % 10;
int i1 = num / 10;
int i2 = i1 / 10;
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
}
}