水仙花数:水仙花数是一个三位数,水仙花数的个位、十位、百位的数字立方和等于原数。
例如:
要判断一个三位数是不是水仙花数,必须要把个、十、百位上的数字分别表示出来(这里仍以371为例):
要得到个位数,只需将原数对10取余,371个位是1,371%10=1 即可得到;
十位是7,371/10=37,将十位移动到了个位,再用37%10=7 即可得到;
要求一个三位数的百位,只需将原数字除以100,371百位是3,371/100=3,即可得到。
(扩展:如何求任意数的某位上的数字呢?
例如,要求得3587466的万位数字8,原数通过除以1万,即可将万位移动到个位上,3587466/10,000=358,再将结果对10取余,358%10=8,即可得到数字8。
总结:要得到哪位上的数字就对该位的数量级取整再取余,个位只取余,最高位只取整即可)
要得到所有的水仙花数,必然要进行遍历,遍历范围是100—999:
for(int i=100;i<=999;i++)
判断条件:
int a=i%10; //得到个位数字
int b=i/10%10; //得到十位数字
int c=i/100; //得到百位数字
if (a^3+b^3+c^3==i) //判断是否为水仙花数
System.out.println(i);
完整代码:
public static test{
public static voidmain(String[] args){
for(int i=100;i<=999;i++){
int a=i%10; //得到个位数字
int b=i/10%10; //得到十位数字
int c=i/100; //得到百位数字
if (a^3+b^3+c^3==i) //判断是否为水仙花数
System.out.println(i);
}
}
}