-1

我有一个 Java 程序“因素”,它接受一个命令行参数并打印它的主要因素。例如,如果您使用参数 3757208 运行程序,它将打印 2 2 2 7 13 13 397。我需要修改代码,以便每个素数只打印一次。所以对于上面的例子,我想要的结果是 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

您可以将其添加到 aSet中,然后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 回答