水仙花数

public class NewNarcissus {

    /*
     * 水仙花数是指一个 n 位数 ( n>=3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 1*1*1 + 5*5*5 + 3*3*3 = 153
       * 三位的水仙花数共有4个,分别为:153、370、371、407
     */
    public static void main(String[] args) {
        int start = 10;
        int finish = 100000;
        int max = String.valueOf(finish).length();
        int[] a = new int [max];
        for(int i=start;i<finish;i++) {
            String str = i+"";
            for(int j=1;j<9;j++) {
                int sum = 0;
                for(int z=1;z<=max;z++) {
                    int p = z-1;
                    if(str.length()>=z) {
                        a[p] = Integer.valueOf(str.substring(str.length()-z,str.length()-p));
                    }
                    sum+=(int) Math.pow(a[p], j);
                }
                if(sum==i) {
                    System.out.println(i);
                }                
            }
        }
    }
}

 写得不对!

posted @ 2018-01-26 10:18  勤劳的杯子  阅读(243)  评论(1编辑  收藏  举报