在我的代码中,用户输入他们想要测试的数字,然后输入数字。如果一个数字可以除以 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");
}
}
}
“三个不同的数字”是指像“4”这样的数字,它可以被“4、2 和 1”整除。
当我输入这个时:
3
2 3 4
它返回:
0
0
0
当它应该返回时:
0
0
1
最佳答案
在 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 本身始终是一个因子。因此,您可以忽略对这些值的检查。
关于Java - 3 个或更多不同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837351/