/*
* 水仙花数是指一个三位数,它的每个位上的数字的3次幂之和等于它本身
* (例如:1^3 + 5^3 +3^3 = 153),请打印所有的水仙花数
*
* 接下来看题了,还是老话重提,一定要看清楚题之后,再去分析题,把题分解成几个小步骤来做,
*
* 第一,整个题中出现了打印所有的水仙花数,那么就需要一个循环来做第一步
*
*/
//第一,打印所有的单元数,那么先创建并初始化条件表达式
//在初始化条件表达式时,应该写多少哪?在题的第一句中提到了三位数,那么在写初始化条件表达式时,应该写100,而条件比较表达式最大应写1000
for(var i = 100; i < 1000; i++) {
//打印所有单元数
//alert(i);
/*
* 第二,先获取 i 的百位数、十位数、个位数,并且创建初始化这三个变量
*/
//创建百位数变量,并且取整
var bai = parseInt(i / 100);
//创建十位数变量,并且取整
var shi = parseInt((i - bai * 100) / 10);
//创建个位数变量
var ge = i % 10;
//第三,判断 i 是否是水仙花数
if( bai*bai*bai + shi*shi*shi + ge*ge*ge == i) {
/*
* 在if判断条件中三个变量相乘3次(bai*bai*bai),为什么不写变量乘以3(bai*3)?
* 这是因为bai值是1的时候,相乘3次的结果还是1,而bai的值是1的时候,乘以3的结果是3,结果并不是1
* 我们在这里并不是单纯的像要bai*3,而是相乘3次,这样的结果就与bai*3的结果不一样了。如果看不懂,自己可以
* 去打印看看结果有什么
*/
// alert(bai*bai)
// alert('一:'+bai*bai*bai+';二:'+bai*3);
//第四,打印所有的水仙花数
alert(i)
}
}
网友评论