最后更新时间: 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);
}
}