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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度