首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么内部循环范围在解决这个问题的方式上会有所不同?

为什么内部循环范围在解决这个问题的方式上会有所不同?
EN

Stack Overflow用户
提问于 2019-06-06 07:22:13
回答 1查看 63关注 0票数 0

编写一个静态方法printNumbers,该方法将整数max作为参数,并打印出所有小于或等于max的完美数字。

起初,我一直得到错误的答案,因为在我将内部循环设置为j< max之前,我将其设置为j< i。然而,我不明白为什么这个范围很重要,因为即使j的范围更大,i % j != 0也不会吗?

代码语言:javascript
复制
for (int i = 1; i <= max; i++) {   
    int sum = 0;

    for (int j = 1; j < i; j++) {
        if (i % j == 0) {
            sum += j;
        }
    }
    if (sum == i) {
        System.out.print(sum + " ");
    }
}

如果我更改了内部循环j < max,那么printNumbers(6)会给出1和6,但printNumbers(500)只会给出1,没有其他数字。

EN

回答 1

Stack Overflow用户

发布于 2019-06-06 07:35:45

如果您在内部循环中设置了j < max,则当设置为j = i时,i % j == 0将返回true并使您的结果倾斜。这是一个很好的例子,说明了在编码时需要注意的一个数学错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56469234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档