3、求1000以内的水仙花数.
水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
import java.lang.Math;
public class FindFlowerNumber{
public static void main(String [] args){
for(int i=1;i<=1000;i++){
int k=0; //存储是几位数
int num=i; //把i赋值给num 防止数值变化
int z=0; //存储 商
int f=0; //存储 余数
int sum=0;//求和
//判断几位数
do{
k+=1;
num=num/10;
}while(num>0);
//如果是一位数, 则一定是水仙花 不进入判断
if(k==1){
f=i%10;
}else{//判断是否为水仙花
num=i;
for(int j=(k-1);j>0;j--){
z=num/(int)Math.pow(10,j);
f=num%(int)Math.pow(10,j);
sum+=(int)Math.pow(z,k); //最高位的k次方相加
num=f;
}
}
sum=sum+(int)Math.pow(f,k);//再加最后个位数 的k次方
if(sum==i){
System.out.print(i+" ");
}
}
}
}