数组中素数的输出量

时间:2015-12-02 22:32:45

标签: java arrays arraylist

我是Java的新手,并不是很擅长。这对我来说是一个试错过程。

我正在研究一个Java程序来输出数组中的素数。我可以让它输出素数,但我也想输出素数的数量。我试图将每个素数添加到标题为" primes"的数组列表中。然后返回" primes.size()"在我的计划结束时。它没有按预期工作。计数实际上是关闭的。当我创建一个包含5个数字的数组时,它输出3个素数,2,3和5.然后它说我有4个素数。我认为这可能是1作为素数。因为当我创建一个20的数组时,素数输出2,3,5,7,11,13,17和19.然后它表示总素数= 9.它应该是8。

这是我的代码

public class Prime {
    public static void main(String[] args) {
        int index = 0;
        Scanner scan = new Scanner(System. in );
        System.out.println("How big would you like the array? ");
        int num = scan.nextInt();
        int[] array = new int[num];
        ArrayList < Integer > primes = new ArrayList < Integer > ();

        //System.out.println("How Many threads? ");
        //int nThreads = scan.nextInt();  // Create variable 'n'  to handle whatever integer the user specifies.  nextInt() is used for the scanner to expect and Int.

        //Thread[] thread = new Thread[nThreads];     
        for (int n = 1; n <= array.length; n++) {
            boolean prime = true;

            for (int j = 2; j < n; j++) {
                if (n % j == 0) {
                    prime = false;
                    break;
                }
            }

            if (prime) {
                primes.add(n);
            }

            if (prime && n != 1) {

                System.out.println(n + "");
            }

        }
        System.out.println("Total Prime numbers = " + primes.size());
        System.out.println("Prime Numbers within " + array.length);
    }
}

原谅它的邋..我实际上计划在其中添加多线程,但我想首先解决这个问题。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:4)

您已将1添加到素数数组中,因为您已在n启动了1 for循环。由于最终的if声明,您不打印它,但它位于ArrayList

使用n开始n = 2 for循环。因此,您不会需要最终的if声明,因为n永远不会成为1。您可以在将其添加到ArrayList

的同时打印素数
相关问题