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