日期:2014-05-20 浏览次数:21010 次
public class ShuiXian{
public static void main(String[] args){
int i=153;
int j=i/100;
int k=(i/10)%10;
int n=i%10;
if(i>=100&&i <1000){
if(i==j*j*j+k*k*k+n*n*n){
System.out.println(i+"是水仙花数!");
}else{
System.out.println(i+"不是水仙花数!");
}
}else{
System.out.println("输入的不是三位数!");
}
}
}
------解决方案--------------------
public class Test {
//把0-9的n次方先算出来保存到一个数组里,每次用到的时候直接去取,避免多次运算,提高效率.
private static final int[] arr = {0,1,8,27,64,125,216,343,512,729};
public static void main(String[] args) {
System.out.println(isArmstrongNumber(153));
}
public static boolean isArmstrongNumber(int n) {
int temp = n;
while(temp!=0) {
n -= arr[temp%10];
temp/=10;
}
return n==0;
}
}