выход 2-го для цикла - PullRequest
       4

выход 2-го для цикла

0 голосов
/ 03 октября 2019

у меня есть этот код здесь, и мне действительно трудно понять, что не при i == 6 это приведет к двум результатам во втором цикле, когда 6% 2 = 0 и 6% 3 = 0и 6% 4 = 2. так как компилятор решит, что если 6 - простое число или нет

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

private static boolean isPrime(int n) { 
    for (int i = 2; i < n; i++){
        if (n % i == 0)
            return false;
        }
              return true;

}

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Я предполагаю, что вы спрашиваете, откуда второй цикл знает, что 6 простое или нет.

Во втором цикле, если n равно 6, цикл будет запущен один раз, а затем вернет false, поскольку 6% 2 == 0. Он не будет проверять 6% 3, 6% 4, потому что оператор возврата уже был вызван.

В основном, если выполняется условие n% i == 0, оператор возврата вызывается, поэтому больше значений не проверяется. ,Помните, что для простых чисел n% i == 0 никогда не может быть истинным, поэтому нет смысла проверять любые другие значения.

0 голосов
/ 03 октября 2019

Этот код печатает каждое нечетное число как «простое», потому что метод isPrime вернет false if (n%2 == 0) (первая итерация) и true в противном случае.

Вы можете изменить свой метод на что-то вроде:

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

private static  boolean isPrime(int n) {    
    for (int i =2; i< n; i++)
        if (n%i == 0)
        return false;
    }
    return true;
}
...