Как я могу завершить мой код о сите из эратостенов? - PullRequest
0 голосов
/ 14 февраля 2019

Речь идет о поиске простых чисел от 2 до 1000 с использованием этого метода, но я не могу найти решение, и я думал и пытался решить эту проблему в течение трех дней.Я отчаянно нуждаюсь в помощи, поэтому, если кто-нибудь сможет мне помочь, я буду очень признателен за это

Я попробовал другой цикл for и оператор if, так как мой учитель сказал, что мне нужен только другой цикл или просто еще одна строка кода, но яне могу найти решение.Я очень плох в этом, так что извините, если мой код кажется неосторожным

public class Practica {

  public static void main(String []   
    byte []marcado = new byte [1000];
    for (int i = 2; i < 1000; i++);
    if (marcado[i] == 1) {
      for (int j = 2; i*j < 1000; j++) {
       marcado [i*j] = 0;
      }
    }

Я ожидаю, что все простые числа будут напечатаны

1 Ответ

0 голосов
/ 14 февраля 2019

Дайте ему шанс:

public static void main(String[] args) {
        byte[] marcado = new byte[1000];
        for (int i = 2; i*i < 1000; i++) {
            if (marcado[i] == 0) {
                for (int j = 2; i * j < 1000; j++) {
                    marcado[i * j] = 1;
                }
            }
        }

        // print the numbers:
        for (int i = 1; i < 1000; i++) {
            if(0 == marcado[i]){
               System.out.print(" " + i);
            }
        }
    }

Помимо удаления синтаксических ошибок, я изменил логику так, что marcado [i] == 0 указывает простое и не простое число в противном случае.

Другойвозможность, основанная на вашем подходе, состояла бы в том, чтобы инициализировать все элементы массива с помощью «1» (например, с заливкой);

...