編程題目:
41.打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個”水仙花數”,因爲153=1的三次方+5的三次方+3的三次方。
示例代碼:
package program.calculation.exercise41;
/**
* 41.打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。
* 例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
* 分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
*/
public class NarcissusNumber {
public static void main(String[] args) {
//獲取水仙花數
getNarcissusNumber();
}
//獲取水仙花數
private static void getNarcissusNumber() {
int count = 0; //水仙花數個數
for (int i=100;i<=999;i++) { //三位數
if(isNarcissusNumber(i)) {
count++;
System.out.println(i);
}
}
System.out.println("水仙花數共有"+count+"個!");
}
//判斷是否是水仙花數
private static boolean isNarcissusNumber(int number) {
int unit = (number%10)%10; //個位數 ,注意:number%100與number%10%10不相同,如 110
int decade = (number/10)%10; //十位數
int hundred = number/100; //百位數
//Math.pow(i, j):求i的j次方
int num = (int)(Math.pow(unit, 3)+Math.pow(decade, 3)+Math.pow(hundred, 3));
if(number == num){
return true;
}
return false;
}
}