Может кто-нибудь помочь мне понять это для цикла? - PullRequest
0 голосов
/ 21 марта 2019

Здравствуйте, я новый ученик в java, репетитор по Udemy дал нам этот метод, но он не объяснил его, мне было трудно его понять, и я попытался выполнить его, но все же тоже самое. PS: извините за мой английский, я араб. Это метод:

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;


}

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Код перебирает все числа от 2 до n/2 и проверяет, делится ли n на это число. Если оно делится на любое из этих чисел, функция возвращает false, поскольку n имеет делитель. Если мы не нашли делителя от 2 до n/2, то число простое. Лучшим подходом было бы зацикливание на квадратный корень из n.

0 голосов
/ 21 марта 2019

Метод isPrime(int n) принимает целое число n и проверяет, простое оно или нет.

Сначала он проверяет, равно ли n 1. Если это метод, возвращает false, потому что1 не является простым.

После этого он проходит по всем числам от 2 до n/2 и проверяет, делится ли n на это число.Если это так, метод возвращает false, потому что тогда он не прост.

Причина, по которой он не проверяет каждое число от 2 до n, заключается в том, что он будет избыточным.Число n никогда не может быть выражено как произведение целого числа и числа, которое больше n/2, за исключением n, но тогда оно не будет простым числом.

...