public static void Happy(int n) {
int sum = 0;
int digit = 0;
for (int i = 0; i < 20; i++) {
while (n != 0) {
digit = n%10;
sum += digit*digit;
n/=10;
}
System.out.print(sum + " ");
n = sum;
sum = 0;
}
}
{
int sum = 0;
int n1 = n;
int count = 0;
for (int i = 0; ; i++) {
while (true) {
int a = n%10;
sum += a*a;
n /= 10;
if (n == 0){break;}
}
if (sum==4){
count++;
}
if (sum==1){return true;}
if (count==2){return false;}
n = sum;
sum=0;
}
}
{
//弗洛伊德循环查找算法
public static boolean isHappy(int n) {
int slow = n;
int fast = n;
while (true) {
slow = Next(slow);
fast = Next(Next(fast));
if (fast == 1) {
return true;
} else if (fast == slow) {
return false;
}
}
}
public static int Next(int n){
int sum = 0;
while (n != 0){
int digit = n % 10;
sum += digit*digit;
n /= 10;
}
return sum;
}
public static void main(String[] args) {
System.out.println(isHappy(19));
}
}