Happy Number

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的平方和)


本题是判断正整数是否是Happy Number。求n的各个位上的平方和,若是1,则返回true。若不是1,则另n=平和,依次循环。如果n不是Happy Number的话,会一直循环下去,怎么跳出这个循环。可以将所有结果放在数组中,如果本次的结果和以前的结果有重复,则返回false退出。

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;
	}

猜你喜欢

转载自420532394.iteye.com/blog/2205193