Java 查找2到100之间的数字因子
我试图在Java中获得从2到100的数字因子Java 查找2到100之间的数字因子,java,for-loop,Java,For Loop,我试图在Java中获得从2到100的数字因子 但是这段代码无法得到4、6、8、25等的正确答案。这可能是因为它迭代了i的sqrt,也可能是因为条件'ifj!=sqrt'这是因为因子j有时可以等于i的sqrt,sqrt当然是i的因子,稍后将在代码中打印出来。因此,我想知道如何修复代码,并可能改进代码以给出正确答案。提示:您需要理解sqrt优化背后的数学原理;i、 e.内部循环中不迭代到100的数学证明。这很简单 一旦你理解了这一点,看看你的代码在那一点上实际在做什么。。。并将其与您的新产品进行比较
但是这段代码无法得到4、6、8、25等的正确答案。这可能是因为它迭代了i的sqrt,也可能是因为条件'ifj!=sqrt'这是因为因子j有时可以等于i的sqrt,sqrt当然是i的因子,稍后将在代码中打印出来。因此,我想知道如何修复代码,并可能改进代码以给出正确答案。提示:您需要理解sqrt优化背后的数学原理;i、 e.内部循环中不迭代到100的数学证明。这很简单 一旦你理解了这一点,看看你的代码在那一点上实际在做什么。。。并将其与您的新产品进行比较?数学理解告诉你应该做什么
boolean bSqrt = true;
int sqrt;
for (int i = 2; i <= 100; i++) {
System.out.print("Factors of " + i + ": ");
sqrt = (int) Math.sqrt(i);
for (int j = 2; j <= sqrt; j++) {
if ((i % j) == 0) {
if(j != sqrt)
System.out.print(j + " ");
if (j != (i / j))
System.out.print(i / j + " ");
if (bSqrt & sqrt != (i / j) & sqrt != j & ((i % sqrt) == 0)) {
System.out.print(sqrt + " ");
bSqrt = false;
}
}
}
bSqrt = true;
System.out.println();
}