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的数学证明。这很简单 一旦你理解了这一点,看看你的代码在那一点上实际在做什么。。。并将其与您的新产品进行比较

我试图在Java中获得从2到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();
    }