В этом уроке Python я объясню вам, как написать программу, проверяющую, является ли число простым или нет в Python.
При создании одного из проектов я реализовал концепцию простых чисел в Python, чтобы легко умножать большие простые числа, поскольку их произведение сложно разложить обратно на исходные числа.
В этом уроке я объясню три подхода к проверке того, является ли данное число простым, используя метод деления с функцией и без нее, а также рекурсивный подход.
Для проверки простого числа
Простое число — это число больше 1, которое можно разделить только на 1 и на себя. Это означает, что если у вас есть число и оно делится на 1 и само себя, то это число простое.
Итак, вы узнаете, как проверить, является ли число простым в Python. Подход, который вы здесь будете использовать, называется пробным разделением.
Сначала создайте переменную со значением, равным 5. Затем вам нужно проверить, является ли это число простым или нет.
number = 5
Далее вам нужно выполнить итерацию в диапазоне от 2 до 5//2, что равно 3, и проверить, делится ли число на любое число в диапазоне, как показано в коде ниже.
if number > 1: for i in range(2,(number//2)+1): if(number % i) ==0: print('Given number is not prime:', number) break else: print('Given number is prime:', number) else: print('Number is not prime:', number)
Посмотрите на приведенный выше код; выполните код, чтобы проверить, больше ли заданное число 1, используя строку «если число > 1». Если число больше 1, он проверяет, делится ли данное число на число в диапазоне 2 и на число//2, равное 3. Таким образом, цикл выполняется в диапазоне от 2 до 3.
В цикле он пытается разделить заданное число на «i» и проверяет, равен ли остаток 0, используя if (num %) == 0. Если остаток равен 0, он делится на число в диапазоне От 2 до 3, поэтому данное число не может быть простым.
Но в данном случае поставляется 5. Поскольку оно не делится ни на какое число, данное число является простым.
С помощью функции
В предыдущем разделе вы изучили программу Python для проверки простых чисел без какой-либо функции.
Создайте функцию с именем check_prime_number, которая принимает один аргумент: число, которое вы хотите узнать, является ли оно простым или нет, как показано ниже.
def check_prime_number(number): if number > 1: for i in range(2,(number//2)+1): if(number % i) == 0: print('Given number is not prime:', number) break else: print('Given number is prime:', number) break else: print('Number is not prime:', number)
Теперь проверим, является ли данное число 19 простым, передав его в функцию check_prime_number.
check_prime_number(19)
Когда вы передаете 19 в функцию check_prime_number, она проверяет и возвращает «Дано число в простом виде: 19».
Вся логика такая же, как и в предыдущем разделе, только здесь логика, обернутая функцией check_prime_number.
С использованием рекурсии
Рекурсия возникает, когда функция вызывает саму себя, поэтому здесь вы увидите, как она неоднократно вызывает себя, чтобы проверить, является ли данное число простым.
Например, создайте функцию is_number_prime, как показано ниже.
def is_number_prime(n, i=2): if n n: return True return is_number_prime(n, i + 1)
Вызовите функцию со значением 23, чтобы определить, является ли это число простым.
number = 23 if is_number_prime(number): print("Yes, given number is prime") else: print("No, given number is not prime")
Посмотрите на результат; это показывает, что данное число 23 является простым. Давайте разберемся, как здесь работает рекурсия.
- Здесь определяется функция с именем «is_number_prime(n, i=2)». Требуется число n, чтобы проверить его на простое число и «i», текущий делитель со значением по умолчанию 2.
- Затем первая строка — это если n = 2 внутри функции. Это означает, что он проверяет, меньше ли «n» 2 или равен 2. Если n равен 2, он возвращает true, используя «True if n==2», поскольку 2 также является простым числом. В противном случае он возвращает false, используя «else false», поскольку число меньше 2 и не является простым.
- После следующей строки кода «if n % i == 0: return False» проверяется, делится ли данное число «n» на «i», что означает, что после деления оно становится равным 0, а затем возвращает значение False, указывающее, что данное число не является простым.
- Следующая строка «if i * i > n: return True» проверяет, больше ли квадрат «i», чем «n». Если это правда, то это означает, что не найдено ни одного делителя до квадратного корня из ‘n’, таким образом, «n» — простое число.
Если все три вышеуказанных условия ложны или не выполнены, функция вызывает саму себя, используя возврат строки is_number_prime(n, i + 1). Итак, здесь текущий делитель увеличивается на 1, используя i+1 в аргументе функции.
Затем тот же процесс повторяется со следующим делителем до тех пор, пока простое число не будет найдено или не найдено.
Затем следующий номер кода = 23, инициализируйте переменную со значением 23. Это значение передается в функцию, используя if is_number_prime(number). Это означает, что если данное число является простым, то оно возвращает true, что означает, что оно печатает «Да, данное число простое», в противном случае выводится «Нет, данное число не простое».