利用js得到一个范围内的数里面所有的水仙花数
所谓的水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153),那么有了逻辑我们就可以利用js得判断一个数是否是水仙花数。
建立一个html文件
在script标签里写出逻辑,输入一个数,然后根据逻辑来定义这个数是否满足水仙花数的特性,由此来判断其是否是水仙花数。
var num =Number(prompt('请输入一个数', 3));
假设输入的是一个三位数,分别取到个位上的数,十位上的数和百位上的数。
var one = num % 10,
ten = (num % 100 - one)/10,
hundred =(num - num % 100)/100;
然后利用一个if else的判断方式检测出其是否是水仙花数。
if(num == one*one*one + ten*ten*ten + hundred*hundred*hundred){
console.log(num+'是水仙花数');
}else {
console.log(num+'不是水仙花数');
}
这个时候我们就会发现,我们能够判断一个三位数是否是水仙花数,
同理如果是一个四位数,就再取出其千位上的数值,就可以利用逻辑来判断是不是水仙花数。
再根据这个基础拓展一下,如果我们不知道哪些数是水仙花数,但是我们要找出一个数值范围内的所有水仙花数,我们总不能一个数一个数的输入判断吧? 那肯定就是不可行的。
这个时候,我们可以利用for循环,来一次性让计算机帮我们判断并且输出这个范围里所有的水仙花数。
这个时候我们就不需要前面那个输入数值的输入框了。
for (var num = 100 ; num < 1000 ; num++) {
var one = num % 10,
ten = (num % 100 - one)/10,
hundred =(num - num % 100)/100;
}
即找出所有三位数的水仙花数。数值范围是100~1000,给出一个num,从100开始运行,num++即是一次自加1,直到num=999停止。
if(num == one*one*one + ten*ten*ten + hundred*hundred*hundred){
console.log(num+'\n');
}
这样就能在网页里的console里查看到所有三位数的水仙花数了 ,’\n’的作用是让输出的数值换行。