Мой учитель сказал, что я должен переместить логическую переменную в цикл.Но я не понимаю, как это сделать - PullRequest
0 голосов
/ 17 октября 2018

Мой код на Java:

import java.util.Scanner;

public class PrimeNumbers {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.println("Введите целое число: ");
    int n = scanner.nextInt();
    boolean isPrime = false;

    for (int i = 2; i <= n; i++) {
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                isPrime = false;
                break;
            } else {
                isPrime = true;
            }
        }
        if (isPrime) {
            System.out.println(i);
        }
    }
}

}

Но мой учитель сказал, что я должен переместить логическую переменную в цикл.Это упростит код.Но я не понимаю, как это сделать.

1 Ответ

0 голосов
/ 17 октября 2018

Ваш учитель говорит, что эта строка:

boolean isPrime = false;

Необходимо переместиться в цикл, где находятся комментарии.Вы явно ищете все простые числа от 2 до n.Ваша переменная цикла 'i' - это простое число для проверки, и независимо от того, является ли оно простым или нет, его нужно инициализировать равным false каждый раз, когда вы запускаете итерационный тест.

for (int i = 2; i <= n; i++) {

    // NEEDS TO BE RIGHT HERE - 
    boolean isPrime = true;
    // You are finding Prime Numbers, and the outer-loop (loop-var 'i')
    // Means the 'isPrime' needs to be re-initialized each time you start testing
    // whether a certain number, i, is prime or not!

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

    // and this line needs to be removed completely.
    // else { isPrime = true; }
    if (isPrime) System.out.println(i);
}
...