求0~N之间的所有水仙花数

求0~N之间的所有水仙花数

我写成了一个函数,可以判断一个自然数是否水仙花数。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

   <head>
      <title>2-13-水仙花数</title>
      <meta charset="UTF-8">
      <meta name="renderer" content="webkit">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   </head>

   <body>
        <script type="text/javascript">
            function isDaffodilNumber(x)  //判断自然数x是否水仙花数
            {
                let sum = 0, xBackup = x;
                while (x != 0)
                {
                    sum += (x % 10) * (x % 10) * (x % 10);
                    x = parseInt(x / 10);
                }
                return xBackup == sum;
            }

            let inputNumber = prompt("请输入自然数N,程序将输出0~N的所有水仙花数:");
            for (let i = 0; i <= inputNumber; ++i)
            {
                if (isDaffodilNumber(i))
                {
                    document.write(i + "<br>");
                }
            }
        </script>
   </body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕码 2019-09-12 18:03:33

同学你好!

你的理解是有一点误区的:水仙花数也叫自幂数,是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。水仙花数只是自幂数的一种,(严格来说3位数的3次幂数才称为水仙花数)。一位数的自幂数叫独身数。

如果帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕码 2019-09-12 12:02:03

同学你好!

结果是有一些不对的,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

同学的代码中也输出了0和1:

http://img1.sycdn.imooc.com//climg/5d79b7c709e3ff3101740180.jpg

而且这个问题就考察的是for循环和水仙花数的相加方法,实际开发中基本不用的,同学可以不用想的这么复杂,例如如下:

http://img1.sycdn.imooc.com//climg/5d79b82e096f195d09910205.jpg

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 按照我的理解,广义水仙花数:该数等于它自己每位数字的立方和。我的函数就是判断一个自然数是否等于广义水仙花数。0的立方等于0,1的立方等于1,因此无误。
    2019-09-12 14:44:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师