求1000以内的水仙花数

水仙花数:n位数,每一位的n次方相加等于该数,则为水仙花数。例如:153,1^3+5^3+3^3=153。

/*
 * 判断是否为完全二叉树:
 * 完全二叉树:除叶子节点外的节点都包含左右节点,此为满二叉树;不为满二叉树,但是叶子节点都集中在左边,没有节点存在有右子树但是没有左子树的情况,也为完全二叉树
 * 所以要判断的情况:
 * 1、一个节点有右子树但是没有左子树,返回false
 * 2、一个节点有左子树没有右子树,此时要求此节点之后的所有节点都为叶子节点,否则返回false
 * 
 * 下面代码的实现思路:利用LinkedList模拟队列,利用其先进先出的特点来便于依次处理节点;
 * 设置一个标记判断是否有子树的存在,这个标记会变成true当且仅当左子树为空或右子树为空的时候;
 * 一旦该标记为true,后续出现节点存在子树直接返回false即可。
 * */

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Random;

public class findKelem {
	
        public static void main(String[] args) {
            //求水仙花数
            int ge,shi,bai;
            int m=0;
            int total=0;
            for(int i=100;i<1000;i++){
                ge=i%10;
                shi=i/10%10;
                bai=i/100;
                int b=(int) (Math.pow(ge,3)+Math.pow(shi, 3)+Math.pow(bai, 3));
                if(i==b){   
                    System.out.println(i);
                    total+=i;
                    m++;    
                }
            }
            System.out.println("1000以内共"+m+"个水仙花数");
        }
}

猜你喜欢

转载自blog.csdn.net/cyanchen666/article/details/82015609