题目:
打印出所有的
"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析设计:
我们可以先建立一个for循环 因为水仙花数是三位数 所以我们的循环范围是[100,999] ,在循环中 将每个数进行分割 分割成个位 十位 百位 然后计算出【个位的三次方 + 十位的三次方 + 百位的三次方】 将计算结果和该数本身对比 如果相等 那么这个数就是水仙花数
代码:
import org.junit.Test;
public class NarcissusNumber {
public void isNarcissusNumber() {
//循环[100 , 999]
for(int i = 100 ; i <= 999 ; i ++) {
//分割出个位
int a = i % 10;
//分割出十位
int b = i / 10 % 10;
//分割出百位
int c = i / 100;
//判断该数是否等于【个位的三次方 + 十位的三次方 + 百位的三次方】
if(i == (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3))) {
System.out.println(i + "是水仙花数");
}
}
}
@Test
public void test() {
isNarcissusNumber();
}
/**
* 结果:
* --->153是水仙花数
* --->370是水仙花数
* --->371是水仙花数
* --->407是水仙花数
*/
}