水仙花数:
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身;
例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
通过下面的两个例子来对水仙花数进一步了解:
对水仙花数的求法转化为对个位数、十位数、百位数的求法。
- 个位数求法:i%10
- 十位数求法:(i/10)%10
- 百位数求法:i/100
求出 1000以内的水仙花数
//第一种写法
for(var i = 1;i<10;i++){
for(var j=0;j<=9;j++){
for(var k=0;k<=9;k++){
if( i*i*i + j*j*j + k*k*k === i*100 +j*10 +k){
console.log(i,j,k)
}
}
}
}
//第二种写法
for( var j = 100;j<1000;j++){
var k = parseInt(j/100);
var l = parseInt((j/10)%10);
var m = parseInt(j%10);
if(j == k*k*k + l*l*l + m*m*m){
console.log(j);
}
}
运行结果:
桃三李四橄榄七
桃3钱一个、李4钱一个、橄榄1钱7个,若百钱购得百个,求桃、李、橄榄各几个?
桃子一个三文钱 李子一个四文钱 橄榄七个一文钱 一百文钱 买三种水果 买一百个
如下代码:
for (var i = 1; ; i++) {
for (var j = 1; ; j++) {
for (var k = 1; ; k++) {
if (i * 3 + j * 4 + k / 7 === 100 && i + j + k === 100) {
console.log("桃子" + i + "个", "李子" + j + "个", "橄榄" + k + "个")
}
if (i * 3 + j * 4 + k / 7 > 100) {
break;
}
}
if (i * 3 + j * 4 > 100) {
break;
}
}
if (i * 3 > 100) {
break
}
}
运行结果:
在生活当中可以利用一下心思哦。