-1

コマンドライン引数を取り、その素因数を出力するJavaプログラム「Factors」があります。たとえば、引数 3757208 を指定してプログラムを実行すると、2 2 2 7 13 13 397 が出力されます。各素因数が 1 回だけ出力されるようにコードを変更する必要があります。したがって、上記の例では、私の望ましい結果は 2 7 13 397 です。ありがとう! コードは次のとおりです。

public class Factors
{

    public static void main(String[] args) 
    { // Print the prime factors of N.        
        long N = Long.parseLong(args[0]);
        long n = N;
        for (long i = 2; i*i <= n; i++) 
        { // Test whether i is a factor.
            while (n % i == 0) 
            { // Cast out and print i factors                 
                n = n / i;
                System.out.print(i + " ");
            }
        }
        // if biggest factor occurs only once, n > 1
        if (n > 1) System.out.println(n);
        else       System.out.println();
    }
}
4

2 に答える 2

3

Set見つかった番号を出力する代わりに、それを に追加してSet、ループの後に出力することができます。これにより、重複が自動的に削除されます。

于 2012-09-14T20:15:11.743 に答える
0

あなたはただできる

if(n % i == 0)
    System.out.println(i + " ");
while(n % i == 0)
    n /= i;

それ以外の

while (n % i == 0) 
{ // Cast out and print i factors                 
    n = n / i;
    System.out.print(i + " ");
}
于 2012-09-14T20:17:22.673 に答える