问题描述
水仙花数是指一个n位数(n>=3),它的每个位(比如三位数,指的就是个位,十位,百位)的数字的n次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153;
求:
100~999之间的水仙花数
问题分析
通过问题描述可知,水仙花数要满足每位上的数字的3次幂之和(因为是3位数:100~999)正好等于这个数的本身,那么我们可以从100开始,通过循环遍历,一个一个数字进行判断是不是满足这个条件,如果满足就要它打印出来
(1)确认程序的框架
通过前面的分析,从3位数100到3位数999,一个一个数字进行判断是不是满足条件;
(2)对数字进行分解
要判断一个数字是不是满足条件,关键是对数字进行分解,把个,十,百位都分解出来。
(3)求解数的三次方
个,十,百位都分解出来之后,接着就求它们的3次方,三次连乘即可。
(4)完整程序如下
package com.example;
public class test02 {
public static int flower(int n){ //求3次方
int m =1;
for (int i =0;i<3;i++){ //循环三次实现三次相乘
m=m*n;
}
return m; //返回结果
}
public static void main(String[] args) {
int i,a,b,c;
int count=0;
for (i=100;i<999;i++){ //所有的3位数循环一遍
a=i/100; //a代表的是百位上的数字
b=i%100/10; //b代表的是十位上的数字
c=i%10; //c代表的是个位上的数字
if (flower(a)+flower(b)+flower(c)==i){
System.out.println(i+"是水仙花数!");
}
}
}
}
运行结果如下: