水仙花数,即一个数的各个位数的立方之和等于这个数本身,例如153=1³+5³+3³。
首先声明三个变量,分别是百位,十位,个位的数字,a,b,c,因为范围是100~1000,所以设a=1,b=0,c=0。
int a = 1;
int b = 0;
int c = 0;
然后声明一个方法,如果是水仙花数(即100a+10b+c=a³+b³+c³),就输出这个数
public static void output(int a,int b,int c)
{
if((100*a+10*b+c)==(a*a*a+b*b*b+c*c*c))
{
System.out.println(100*a+10*b+c);
}
}
然后再用循环,来反复循环这个方法,并且在每一次循环后将个位数即c的值加一
while((100*a+10*b+c)<1000)
{
output(a,b,c);
c++;
}
但如果c加到10了,就得向b进1,同时c归零,b同理
if(c == 10)
{
c = 0;
b++;
if(b == 10)
{
b = 0;
a++;
}
}
所以全部代码结合起来就是
public class Test
{
public static void main(String[] args)
{
int a = 1;
int b = 0;
int c = 0;
while((100*a+10*b+c)<1000)
{
output(a,b,c);
c++;
if(c == 10)
{
c = 0;
b++;
if(b == 10)
{
b = 0;
a++;
}
}
}
}
public static void output(int a,int b,int c)
{
if((100*a+10*b+c)==(a*a*a+b*b*b+c*c*c))
{
System.out.println(100*a+10*b+c);
}
}
}