[size=medium]Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
12 + 92 = 82 (1和9的平方和)
82 + 22 = 68 (8和2的平方和)
62 + 82 = 100 (6和8的平方和)
12 + 02 + 02 = 1(1和0和0的平方和)[/size]
[size=large][b]本题是判断正整数是否是Happy Number。求n的各个位上的平方和,若是1,则返回true。若不是1,则另n=平和,依次循环。如果n不是Happy Number的话,会一直循环下去,怎么跳出这个循环。可以将所有结果放在数组中,如果本次的结果和以前的结果有重复,则返回false退出。 [/b][/size]
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
12 + 92 = 82 (1和9的平方和)
82 + 22 = 68 (8和2的平方和)
62 + 82 = 100 (6和8的平方和)
12 + 02 + 02 = 1(1和0和0的平方和)[/size]
[size=large][b]本题是判断正整数是否是Happy Number。求n的各个位上的平方和,若是1,则返回true。若不是1,则另n=平和,依次循环。如果n不是Happy Number的话,会一直循环下去,怎么跳出这个循环。可以将所有结果放在数组中,如果本次的结果和以前的结果有重复,则返回false退出。 [/b][/size]
public static void main(String args[]){
System.out.println(isHappy(7));
}
public static boolean isHappy(int n){
ArrayList list=new ArrayList();
if(n<=0)
return false;
if(n==1)
return true;
while(n!=1){
int result=0;
String s=String.valueOf(n);
for(int i=0;i<s.length();i++){
int t=Integer.parseInt(s.substring(i, i+1));
result+=t*t;
}
n=result;
list.add(n);
//判断本次结果是否和以前的结果相同,如果相同,返回false退出死循环
if(list.size()>=2){
for(int i=0;i<list.size()-1;i++){
if(list.get(i)==list.get(list.size()-1)){
return false;
}
}
}
}
return true;
}