求1000以内的水仙花数. 水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

时间:2023-01-12 15:12:56

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+" ");
}
}
}

}


求1000以内的水仙花数. 水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)