2015-12-02 3 views
0

Я как бы новичок на 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); 
    } 
} 

Прости небрежность его. Я на самом деле планирую добавить к нему многопоточность, но сначала хочу это сделать.

Любая помощь была бы принята с благодарностью. Благодарю.

+0

Зачем делать различие между решением * печати * числа как простого и * добавления * его в основной список? Они должны быть одно и то же. Вы исключаете 1 из печати, но не добавляете. – Durandal

+2

Если вы новичок в Java, могу ли я предложить вам не пытаться думать о многопоточности? Оставьте это, пока у вас не будет абсолютно приглушенных основ, а затем и некоторых. –

+1

Одностороннее примечание - вам не нужна переменная 'array', поскольку вы используете только ее длину и не сохраняете в ней никаких значений. Просто удалите его и используйте 'num' вместо' array.length'. – xersiee

ответ

4

Вы включили 1 в свой массив простых чисел, потому что вы запустили цикл n на 1. Вы не печатаете его из-за окончательного заявления if, но он есть в ArrayList.

Запустите n для цикла с n = 2. Как следствие, вам не понадобится окончательный отчет if, потому что n не будет 1. Вы можете распечатать штрих одновременно с добавлением его к ArrayList.

Смежные вопросы