m0_46602893 2021-04-04 11:44 采纳率: 91.5%
浏览 28
已结题

求1000以内的水仙花数,为什么我的代码是错的?

<!DOCTYPE html>
<html lang="en">

<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <script>
            for (i = 100; i < 1000; i++) {
                  if (i == (i % 10) * (i % 10) * (i % 10) + (((i - (i % 10)) / 10) % 10) * (((i - (i % 10)) / 10) %
                        10) * (((i - (i % 10)) / 10) % 10) + ((i - (i % 10) - (((i - (i % 10)) / 10) % 10)) / 100) * ((
                              i - (i % 10) - (((i - (i % 10)) / 10) % 10)) / 100) * ((i - (i % 10) - (((i - (i % 10)) /
                              10) % 10)) / 100)) {
                        document.write(i);
                  }

            }
      </script>
</head>

<body>

</body>

</html>

我的逻辑思维是:1:个位:i对10取余 的三次方

2:十位:i - 个位的数再除以10,得出来的数再对10取余

3:百位:i - 个位 - 十位,得出来的数再除以100

 

以上的逻辑思维都没有问题(虽然有点繁琐),为什么得出来的i只有一个数:407?

 

  • 写回答

1条回答 默认 最新

  • �Lzyo� 2021-04-05 15:26
    关注
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <script>
        for(let i=100;i<=1000;i++){
            let ge=i%10;
            let shi=Math.floor(i/10%10);  // 向上取整(Math.floor)
            let bai=Math.floor(i/100);
            // 求次方(**)
            // 全等(===)
            if (i === (ge**3 + shi**3 + bai**3)){
                document.write(i,"\n");
            }
        }
    </script>
    </body>
    </html>

    你判断里面的条件语句可以给它优化一下,你这样写不利于检查错误,太过于杂乱

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助