Member 13293166 Ответов: 1

Как найти первые простые числа под N


Привет, я написал код для перечисления простых чисел под переменной N, я не понимаю, почему это не работает. вот мой код:

int N, i, j;
boolean isPrime;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter value of N:");
N = scanner.nextInt();

for (j=2; j <=N; j++) {

    isPrime = true;

    for (i=2; i<=j ; i++) {

        if (j%i == 0) {

            isPrime = false;
            System.out.println(+j);
            break;

        }
    }

    if(isPrime == true){
    System.out.println(+j);

    }


Что я уже пробовал:

Я вставил заявление о печати перед перерывом, и оно просто печатает каждое число, которое я не понимаю

PIEBALDconsult

https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

1 Ответов

Рейтинг:
4

Patrice T

Проблема в том, что i цикл делит число на себя на последней итерации.
Попробуй

for (i=2; i<j ; i++) {


Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.