//水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
//输出所有的水仙花数
public class shuixianhuashu{
public static void main(String[] args){
int count = 0;//计数器
for(int i = 100;i <1000;i++){
//分别提出这个三位数的每一个数字
int a = i / 100;//百位数字
int b = (i-100*a)/10;//十位数字
int c = i % 10;//个位数字
if(a*a*a+b*b*b+c*c*c == i){
count++;
System.out.println("第"+count+"个水仙花数是"+i);
}
}
}
}
仔细观察提取个位数、十位数、百位数,发现是依次降位,因此可以增加依次循环来优化代码,如下:
for (int i=100,count=0,copy,sum;i<10000;i++){
//复制一份,不影响后面进行比较
copy=i;
sum=0;
while (copy>=1){
sum += Math.pow(copy%10,3);
copy /= 10;
}
if (sum==i){
count++;
System.out.println("第"+count+"个水仙花数是"+i);
}
}
------记录自己的小练习。