1、
写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,
然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
2、
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
3、思路:
1、将每个数字都平方相加得到新数
2、使用%和/两个运算
3、新建一个集合,保存曾经得到的数值,否则会陷入死循环
4、代码如下:
public boolean isHappy(int n) { if(n < 1){ return false; } HashSet<Integer> set = new HashSet<Integer>(); while(n != 1 && !set.contains(n)){ int sum = 0; set.add(n); while(n > 0){ sum += Math.pow(n%10, 2); n = n/10; } n = sum; } return n == 1; }