import java.util.Scanner;
public class WaterFlower{
/*
100~n的水仙花数
1.用户输入n
2.判断一个数是否时水仙花
3.获取一个整数的位数次方的和
4.求a的b次方
5.求a的位数
6.打印最小值到最大值之间的水仙花
*/
public static void main(String[] args){
int max = getNumber(200);
printFlower(100,max);
}
//用户输入
public static int getNumber(int min){
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入一个大于"+min+"的数");
int number = sc.nextInt();
if(number>=min){
return number;
}
}
}
//求a的b次方
public static int pow(int a,int b){
int sum = 1;
for(int i = 0;i < b;i++){
sum *= a;
}
return sum;
}
//求a的位数
public static int getBit(int a){
int bit = 0;
while(a>0){
bit++;
a /= 10;
}
return bit;
}
//获取一个整数位数次方的和
public static int bitSum(int a){
int bit = getBit(a);//获取整数的位数
int sum = 0;
while(a>0){
sum += pow(a%10,bit);
a /= 10;
}
return sum;
}
//判断一个数是否时水仙花
public static boolean ifFlower(int a){
return a==bitSum(a);
}
//打印min到max的水仙花数
public static void printFlower(int min ,int max){
for(int i = min;i <= max;i++){
if(ifFlower(i)){
System.out.println(i);
}
}
}
}