Java-3或更多不同的数字

Java-3或更多不同的数字,java,arrays,distinct-values,Java,Arrays,Distinct Values,在我的代码中,用户输入他们想要测试的数字,然后输入数字。如果一个数字可以被3个不同的数字除,它将打印一个“1”。否则,它将打印一个“0”。当我运行代码时,它只打印“0”。我试着修复一些括号,看看语法是否有问题 int distinct = 0; int T = input.nextInt(); int [] nums = new int [T]; for (int n : nums) {

在我的代码中,用户输入他们想要测试的数字,然后输入数字。如果一个数字可以被3个不同的数字除,它将打印一个“1”。否则,它将打印一个“0”。当我运行代码时,它只打印“0”。我试着修复一些括号,看看语法是否有问题

            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");
                }
            }
        }
它返回:

0
0
0
应在何时返回:


在for循环中,使用
int m=nums.length
启动变量

由于用户在开始时将
nums
的长度定义为3,因此在检查所有小于此值的正整数之前,您检查的第一个因子是3。因此,对于
n=4
您选中3、2和1;只有2和1是如此不同的因子,因此将是2。我猜想这应该是
int m=n

for (int m = n; m == 0; m--) {
    if (n % m == 0) {
        distinct++;
    }
}
假设忽略负整数(因为这意味着可以考虑负整数),唯一失败的时间是当n为1或n为素数时;1和n本身始终是一个因素。因此,您可以忽略对这些值的检查

0
0 
1
for (int m = n; m == 0; m--) {
    if (n % m == 0) {
        distinct++;
    }
}