快樂數(編寫一個算法來判斷一個數是不是“快樂數”。 一個“快樂數”定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和, 然后重復這個過程直到這個數變為 1,也可能是無限循環但始終變不到 1。如果可以變為 1, 那么這個數就是快樂數。)


示例:
輸入: 19
輸出: true
解釋:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

public static boolean isHappy(int n) {
        boolean flag = true;
        //用來添加每次計算后的結果
        List<Integer> list = new ArrayList<Integer>();
        while(n!=1) {
            //計算數字長度
            String s = "" + n;
            int len = s.length();
            int sum = 0;
            //對該數的每一位平方后相加
            for(int i = len;i>0;i--) {
                sum += (int)Math.pow(n % (int)Math.pow(10,i) / (int)Math.pow(10, i - 1) , 2);
            }
            //如果該集合已經包含sum,那么就是死循環,直接返回false
            if(list.contains(sum)) {
                return !flag;
            }
            //不包含,將sum加入集合中
            list.add(sum);
            //將sum的值賦給n
            n = sum;
        }
        return flag;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM