什么是水仙花数?
所谓的水仙花数是指:一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
就拿153来说
满足上面的条件就是水仙花数,否则就不是。在编写代码的过程中,重点是如何分解,如何表达出数字中的个位,十位,百位等。
第一种
在这里定义三个整型变量,这里的n代表数字的值,用a,b,c来分别表示该数n的个位,十位,百位。则可得:
a = n%10; // 分解出个位
b = n/10%10; // 分解出十位
c = n/100; // 分解出百位
例题:在这里我编程实现求100~1000中的所有水仙花数。
var a, b, c;
for (i = 100; i < 1000; i++) {
var a = parseInt(i % 10); //个位数
var b = parseInt((i / 10) % 10); //十位数
var c = parseInt(i / 100); //百位数
if (a * a * a + b * b * b + c * c * c == i) {
document.write(i + "是水仙花数" + "<br/>");
}
}
第二种写法
for(var b = 1; b <= 9; b++){ //百位数
for(var s = 0; s <= 9 ; s++){ //十位数
for(var g=0; g<=9; g++){ //个位数
if(b * b * b + s * s * s + g * g * g == g*1+s*10+b*100 ){
console.log(b,s,g);
}
}
}
}
编译执行该代码,便可得出100~1000中所有的水仙花数分别为: