//打印100000内的水仙花数
/*【提示:水仙花数是指一个 n 位数 ( n≥3 ),
它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)】*/
class Narcis {
public static void main(String[] args){
getNarcis(1000000000);
//测试语句
// System.out.println("5::"+ expon(5,3));
// System.out.println("153:"+ sum(153));
// System.out.println("153:"+ getDigit(153));
}
//1.遍历100——n
public static void getNarcis(int n){
for(int i=100; i<=n; i++){
//2.判断i是否水仙花数
boolean flag = isNarcis(i);
if(flag){
System.out.println(i);
}
}
}
public static boolean isNarcis(int num){
return num==sum(num);
}
//3。分离数字求幂求和
public static int sum(int num){
int sum = 0;
//4.获取位数==>分离数字求幂求和
int digit = getDigit(num);
while(num%10!=0){
sum += expon(num%10,digit);
num /= 10;
}
return sum;
}
public static int getDigit(int num){
int count = 0;
while(num%10!=0){
count++;
num /= 10;
}
return count;
}
//base: 基数, digit:幂 (base的digit次方)
public static int expon(int base, int digit){
int temp = 1;
for(int i=0; i<digit; i++){
temp *= base;
}
return temp;
}
}