每日经典算法题(三) 求水仙花数
水仙花数:Narcissistic Number
题目
打印输出所有的 “水仙花数” 。所谓 “水仙花数” 是指一个三位数,其各位数字立方和等于该数本身。
例如: 153 是一个 “水仙花数” ,因为 153 = 1的三次方+5的三次方+3的三次方。
水仙花数又被称为 “超完全数字不变数” ,“三位自幂数”。
程序分析
利用 for 循环控制 100-999 的数,并分析每个数是否为 “水仙花数”。
思路
整个题目的核心其实就是判断这个数是否满足水仙花数的条件,这就必须要获取到这个数的个、十、百三个位置上的数。然后分别求三次幂,最后求和。由于 Java 中除法运算会自动舍弃小数,所以:
个位数:num % 10,该数字除以 10 的余数即为个位数。
十位数:num % 100 / 10,该数字除以 100 的余数再除以 10 即为十位数。
百位数:num / 100,该数字除以 100 即为百位数。
最后求幂求和即可。
代码示例
public class Q3_NarcissisticNumber {
public static void main(String[] args) {
for (int i=100;i<=999;i++){
int c1 = i/100;
int c2 = i%100/10;
int c3 = i%10;
if (i==c1*c1*c1+c2*c2*c2+c3*c3*c3){
System.out.print(i+"\t");
}
}
}
}
输出结果
153 370 371 407
|