水仙花数,即一个数的各个位数的立方之和等于这个数本身,例如153=1³+5³+3³。
首先声明三个变量,分别是百位,十位,个位的数字,a,b,c,因为范围是100~1000,所以设a=1,b=0,c=0。
1 2 3
| int a = 1; int b = 0; int c = 0;
|
然后声明一个方法,如果是水仙花数(即100a+10b+c=a³+b³+c³),就输出这个数
1 2 3 4 5 6 7
| 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的值加一
1 2 3 4 5
| while((100*a+10*b+c)<1000) { output(a,b,c); c++; }
|
但如果c加到10了,就得向b进1,同时c归零,b同理
1 2 3 4 5 6 7 8 9 10
| if(c == 10) { c = 0; b++; if(b == 10) { b = 0; a++; } }
|
所以全部代码结合起来就是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| 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); } } }
|