2016-07-03 4 views
-2

В этом примере у меня есть код для подсчета простых чисел между 2 - 130. Мне поручено увеличивать количество чисел простых чисел. Я не уверен, как это сделать?У меня есть цикл for для подсчета простых чисел, как подсчитать количество генерируемых простых чисел?

public class Main { 

    public static void main(String[] args) { 

     for (int i=0; i<130; i++){ 
      if(isPrime(i)){ 
       System.out.println(i); 
      } 
     } 
    } 

    public static boolean isPrime(int n) { 

     if (n == 1) { 
      return false; 
     } 
     for (int i = 2; i <= n/2; i++) { 
      if (n % i == 0) { 
       return false; 
      } 
     } 
     return true; 

    } 
} 
+1

Объявите переменный счетчик типа int перед циклом. Инициализируйте его до 0. В вашем блоке 'if' увеличьте его. После цикла он содержит число простых чисел. –

+1

Рассмотрите возможность изменения блока THEN от печати «его простое», чтобы увеличить счетчик, объявленный перед циклом. – GhostCat

+1

Я рекомендую читать учебники. Невероятно простые вопросы, подобные этому, на самом деле не относятся к stackoverflow. – Kayaman

ответ

1

Вам нужно всего лишь добавить целую переменную, которая в вашем для цикла, когда вы нашли простое число, то нужно увеличивать, так же, как показано ниже:

public static void main(String[] args) { 
    int numberOfPrimes=0;    // the variable to count the primes 
    for (int i=0; i<130; i++){ 
     if(isPrime(i)){ 
      System.out.println(i); 
      numberOfPrimes++;   //incrementing for each prime found 
     } 
    } 
    System.out.println("number of primes is: " + numberOfPrimes); //showing the number of primes found. 
} 

public static boolean isPrime(int n) { 

    if (n == 1) { 
     return false; 
    } 
    for (int i = 2; i <= n/2; i++) { 
     if (n % i == 0) { 
      return false; 
     } 
    } 
    return true; 

} 
1

Поскольку вы хотите подсчитайте количество генерируемых простых чисел. Просто объявите переменную типа integer, например say counter и инициализируйте ее значение равным нулю. Затем, когда вы встретите простое число в блоке if, вместо того, чтобы печатать его, увеличьте значение счетчика. После того, как все номера были проверены, напечатайте значение счетчика. Как это:

public class Main { 

    public static void main(String[] args) { 
     int counter = 0; 
     for (int i=0; i<130; i++){ 
      if(isPrime(i)){ 
       counter++; 
      } 
     } 
     System.out.println(counter); 
    } 

    public static boolean isPrime(int n) { 

     if (n == 1) { 
      return false; 
     } 
     for (int i = 2; i <= Math.sqrt(n); i++) { 
      if (n % i == 0) { 
       return false; 
      } 
     } 
     return true; 

    } 

} 

Кроме того, если вы просто хотите, чтобы проверить номера от 2-130, то почему бы начать цикл for от i=0. Вы должны начать с i=2. Это поможет сэкономить некоторое время процессора (не так уж важно в этом случае). Кроме того, чтобы сэкономить больше времени процессора, вы можете искать штрих до квадратного корня из числа, вместо того, чтобы зацикливать до половины потенциального штриха.

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