编程题目:
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;
}
}