问题
喇叭花数是三位数,它的每一位数字的阶乘之和恰好等于它本身,即
abc=a! + b! + c!.
现要求找出所有的喇叭花数
思路
可以将计算某个数字的阶乘封装成函数,然后再判断100-999的所有三位数中是否满足喇叭花数的要求
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>寻找喇叭花数</title>
</head>
<body>
<script>
// 定义函数:计算数n的阶乘
function factorial (n){
// 累乘器
var res=1;
for (var i=1;i<=n;i++){
res *= i;
}
return res;
}
// 穷举法从100-999寻找喇叭花数
for(var i=100;i<=999;i++){
// 把数字i变为字符串
var i_str=i.toString();
// abc分别表示百位、十位、个位,并转化为数字
var a= Number(i_str[0]);
var b= Number(i_str[1]);
var c= Number(i_str[2]);
// 判断是否为喇叭花数
if (factorial(a)+factorial(b)+factorial(c)==i){
console.log(i);
}
}
</script>
</body>
</html>
结果
喇叭花数只有1个,即145