【问题描述】
判断一个正整数是否是快乐数字?
如果一个数字能够通过有限次快乐变换成为1,则是快乐数字。
快乐变换是对一个数字的每一位的平方数求和。
例如:
对于68
68 => 62+82= 100
100 => 12 + 02 + 02 = 1
因此68是快乐数字
输入
每一行输入一个整数,代表n;如果n为-1,表示输入结束。(n <= 100000000)
输出
针对每组数据,输出是否是快乐数字 true/false
package Xueying_Liu;
import java.util.Scanner;
public class kuaileshu {
public static String s = "";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (; ; ) {
s = "";
int n = sc.nextInt();
if (n == -1) return;
if (isHappy(n))
System.out.println("是快乐数\n" + s);
else
System.out.println("不是快乐数\n");
}
}
public static boolean isHappy(int n) {
s = s + n + " ";
// Write your code here
if (n == 1) {
return true;
}
if (n < 1) {
return false;
}
int count = 0;
while (n != 1) {
String s = n + "";
char[] arr = s.toCharArray();
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += Integer.parseInt(arr[i] + "") * Integer.parseInt(arr[i] + "");
}
n = sum;
s = s + n + " ";
count++;
if (count > 1000) {
return false;
}
}
return true;
}
}