0

内部ループのリファクタリングについて支援が必要です。より少ない反復を含む、より効率的な方法が必要です。

public static void main(String[] args) {
    for (int i = 2; i <= 100; i++) {
        System.out.print("Factors of " + i + ": ");


        for (int j = 2; j < i; j++)
            if ((i % j) == 0)
                System.out.print(j + " ");
        System.out.println();

    }
}

これが私がこれまでに試みたことです:

 int j = 2;
        do{
        if ((i % j) == 0) System.out.print(j + " ");
        System.out.println();
        j++;
    } while (j < 2);

これは最初の要素のみを出力するだけで、リスト全体からそれを取得する方法を一生理解することはできません。私は意味的に何かが欠けていることを知っていますが、それは私の髪を引っ張っています。

4

3 に答える 3

3

jfor ループを から2まで実行するだけでMath.sqrt(i)済みます。これは、 の因数jiより小さいか等しい場合、対応する因数がより大きいか等しいことMath.sqrt(i)もわかり、その因数も出力できるためです (でない限り、同じ要素を 2 回出力しないでください)。i/jMath.sqrt(i)j == i/j

于 2013-08-28T17:04:36.577 に答える