在我的代码中,用户输入要测试的数字,然后输入数字。如果一个数字可以被三个不同的数字除以,它就会打印一个"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");
}
}
}所谓“三个不同的数字”,我指的是像"4“这样的数字,它可以除以"4,2和1”。
当我输入这个:
3
2 3 4它返回:
0
0
0当它返回时:
0
0
1发布于 2018-02-17 02:50:48
在for循环中,使用int m = nums.length初始化变量。
由于用户在开始时将nums的长度定义为3,所以在检查小于此值的所有正整数之前,首先检查的因素是3。因此,对于n = 4,您需要检查3、2和1;只有2和1是非常不同的因素。我想这应该是int m = n;
for (int m = n; m == 0; m--) {
if (n % m == 0) {
distinct++;
}
}假设您忽略了负整数(因为这意味着可以考虑负整数),则只有当n是1或n是素数时才会失败;1和n本身总是一个因素。因此,您可以忽略对这些值的检查。
https://stackoverflow.com/questions/48837351
复制相似问题