首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java-3或更多不同的数字

Java-3或更多不同的数字
EN

Stack Overflow用户
提问于 2018-02-17 02:38:20
回答 1查看 163关注 0票数 1

在我的代码中,用户输入要测试的数字,然后输入数字。如果一个数字可以被三个不同的数字除以,它就会打印一个"1“。否则,它会打印一个"0“。当我运行代码时,它只打印"0“。我试着修复一些括号,以查看语法中的某个地方是否搞砸了。

代码语言:javascript
复制
            int distinct = 0;
            int T = input.nextInt();
            int [] nums = new int [T];

            for (int n : nums) {
                distinct = 0;
                n = input.nextInt();
                for (int m = nums.length; m == 0; m--) {
                    if (n % m == 0) {
                        distinct++;
                    }
                }
                if (distinct < 3) {
                    System.out.println("0");
                }
                else
                    System.out.println("1");
                }
            }
        }

所谓“三个不同的数字”,我指的是像"4“这样的数字,它可以除以"4,2和1”。

当我输入这个:

代码语言:javascript
复制
3
2 3 4

它返回:

代码语言:javascript
复制
0
0
0

当它返回时:

代码语言:javascript
复制
0
0 
1
EN

回答 1

Stack Overflow用户

发布于 2018-02-17 02:50:48

在for循环中,使用int m = nums.length初始化变量。

由于用户在开始时将nums的长度定义为3,所以在检查小于此值的所有正整数之前,首先检查的因素是3。因此,对于n = 4,您需要检查3、2和1;只有2和1是非常不同的因素。我想这应该是int m = n

代码语言:javascript
复制
for (int m = n; m == 0; m--) {
    if (n % m == 0) {
        distinct++;
    }
}

假设您忽略了负整数(因为这意味着可以考虑负整数),则只有当n是1或n是素数时才会失败;1和n本身总是一个因素。因此,您可以忽略对这些值的检查。

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

https://stackoverflow.com/questions/48837351

复制
相关文章

相似问题

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