Функция нахождения простых чисел питон

Проверка числа на простоту с использованием рекурсии

Программа получает на вход число и определяет, является ли это число простым или нет, используя рекурсивный алгоритм.

Решение задачи

  1. Принимаем число и записываем его в отдельную переменную.
  2. Передаем это число в качестве аргумента в рекурсивную функцию. В качестве второго аргумента этой рекурсивной функции будет переменная-делитель. Она при первом вызове инициируется значением None .
  3. Затем делителю присваивается значение на единицу меньшее, чем наше число, и проверяется, делится ли число на него без остатка. Если делится, программа завершает работу и определяет, что число не является простым.
  4. Если нет, то функция рекурсивно вызывает саму себя, причем второй аргумент (делитель) теперь на 1 меньше, чем был до этого.
  5. Таким образом, мы проверяем делимость исходного числа на все числа, которые меньше него и больше 1 . Если хоть на одно из этих чисел оно делится без остатка, функция возвращает False . В противном случае число считается простым.
  6. Выводим результат на экран.
  7. Конец.

Исходный код

Ниже дан исходный код, который осуществляет проверку числа на простоту с использованием рекурсии. Результаты работы программы также даны ниже.

def check(n, div = None): if div is None: div = n - 1 while div >= 2: if n % div == 0: print("Число не является простым") return False else: return check(n, div-1) else: print("Число является простым") return True n = int(input("Введите число: ")) check(n)

Объяснение работы программы

  1. Принимаем число и записываем его в отдельную переменную n .
  2. Передаем это число в качестве аргумента в рекурсивную функцию check() . В качестве второго аргумента этой рекурсивной функции передается переменная div , которая будет делителем. Она при первом вызове инициируется значением None .
  3. Затем делителю присваивается значение на единицу меньшее, чем наше число, и проверяется, делится ли число на этот делитель без остатка. Если делится, программа завершает работу и определяет, что число не является простым.
  4. Если нет, то функция рекурсивно вызывает саму себя следующим образом: check(n, div-1) . Заметьте, что второй аргумент div теперь на 1 меньше, чем был до этого.
  5. Таким образом мы проверяем делимость исходного числа на все числа, которые меньше него и больше 1 . Если хоть на одно из этих чисел оно делится без остатка, функция возвращает False : число не является простым. А если нет, то число простое.
  6. Выводим результат на экран.
Читайте также:  Плагин метание ножей css v34

Результаты работы программы

Пример 1: Введите число: 13 Число является простым Пример 2: Введите число: 30 Число не является простым

Примечание переводчика

Данный код приведен лишь для примера использования рекурсии. С вычислительной точки зрения он является крайне несовершенным. Так, например, рассматриваемый нами ранее алгоритм решета Эратосфена гораздо экономичней. В данном же коде есть недостатки. Например, совсем необязательно проверять, делится ли число n на n — 1 без остатка, и так ясно, что нет. Предоставим читателям возможность самим улучшить данный код.

Источник

Проверка числа на простоту

Программа принимает на вход число и проверяет, простое оно или нет.

Решение задачи

  1. Принимаем на вход число и записываем его в отдельную переменную.
  2. Инициализируем переменную, которая будет выполнять роль счетчика, значением 0 .
  3. Организуем цикл for в диапазоне от 2 до значения проверяемого числа, деленного на 2 (речь идет, конечно, о целочисленном делении).
  4. Затем находим количество делителей нашего числа. При помощи условного оператора if мы проверяем, делится ли число без остатка, и затем, если делится, увеличиваем наш счетчик на единицу.
  5. Если число делителей равно 0 , то проверяемое число является простым.
  6. Выводим результат на экран.
  7. Конец.

Исходный код

Ниже дан исходный код, который осуществляет проверку числа на простоту. Результаты работы программы также даны ниже.

a = int(input("Введите число: ")) k = 0 for i in range(2, a // 2+1): if (a % i == 0): k = k+1 if (k 

Объяснение работы программы

  1. Пользователь вводит число, и оно сохраняется в переменную a .
  2. Инициализируем переменную k значением 0 . Эта переменная будет выполнять роль счетчика.
  3. Запускаем цикл for в диапазоне от 2 до значения проверяемого числа, деленного на 2 (речь идет, конечно, о целочисленном делении). Напоминаем, что само число и 1 делителями мы считать не будем.
  4. Затем, при помощи инструкции if , на каждой итерации цикла мы проверяем, делится ли наше число без остатка на числа из выбранного диапазона цикла. Если делится, то переменная k , выполняющая роль счетчика, увеличивается на единицу.
  5. Если число делителей равно 0 , то проверяемое число является простым.
  6. Выводим полученный результат на экран.

Результаты работы программы

Пример 1: Введите число: 7 Число простое Пример 2: Введите число: 35 Число не является простым

Еще более 50 задач на числа в нашем телеграм канале Python Turbo. Уютное сообщество Python разработчиков.

Источник

Проверьте, является ли число простым в Python

Проверьте, является ли число простым в Python

  1. Используйте простой метод итерации для определения простого числа в Python
  2. Используйте функцию sympy.isprime() , чтобы проверить, является ли данное число простым числом в Python

Простое число может быть изображено как натуральное число без других положительных делителей, кроме числа 1 и самого себя. Число 1 не учитывается в списке простых чисел.

В этом руководстве будут рассмотрены различные методы, которые вы можете использовать, чтобы проверить, является ли число простым.

Используйте простой метод итерации для определения простого числа в Python

В этом методе мы используем простой метод итерации с использованием цикла for или while . Переберите числа, начиная с 2 и далее до K/2 , и проверьте, делит ли какое-либо из этих чисел K .

Если найдено число, соответствующее этому критерию, то возвращается False . С другой стороны, если все числа не соответствуют этому критерию, данное число K является простым числом, и возвращается значение True .

В следующем коде используется метод простой итерации, чтобы проверить, является ли данное число простым числом в Python.

k = 13  # 1 not being a prime number, is ignored if k > 1:  for i in range(2, int(k/2)+1):  if (k % i) == 0:  print("It is not a prime number")  break  else:  print("It is a prime number")  else:  print("It is not a prime number") 

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

В следующем коде используется оптимизированный метод простой итерации, чтобы проверить, является ли данное число простым числом в Python.

def isitPrime(k):  if k==2 or k==3: return True  if k%2==0 or k2: return False  for i in range(3, int(k**0.5)+1, 2):  if k%i==0:  return False   return True print(isitPrime(13)) 

Источник

Вывести все простые числа в диапазоне Python – пошаговый алгоритм

Простое число — это натуральное число, которое больше 1 и не имеет положительного делителя, кроме 1 и самого себя, например 2, 3, 5, 7, 11, 13 и так далее.

Пользователю даются два целых числа, нижнее значение и верхнее значение. Задача состоит в том, чтобы написать программу Python для вывода всех простых чисел в заданном интервале (или диапазоне).

Чтобы напечатать все простые числа в заданном интервале, пользователь должен выполнить следующие шаги:

  • Шаг 1: Переберите все элементы в заданном диапазоне.
  • Шаг 2: Проверьте для каждого числа, есть ли у него какой-либо множитель между 1 и самим собой.
  • Шаг 3: Если да, то число не простое, и оно перейдет к следующему числу.
  • Шаг 4: Если нет, то это простое число, и программа распечатает его и проверит следующее число.
  • Шаг 5: Цикл прервется, когда будет достигнуто верхнее значение.

Пример: код Python для печати простого числа в заданном интервале.

# First, we will take the input: lower_value = int(input("Please, Enter the Lowest Range Value: ")) upper_value = int(input("Please, Enter the Upper Range Value: ")) print("The Prime Numbers in the range are: ") for number in range(lower_value, upper_value + 1): if number > 1: for i in range(2, number): if(number % i) == 0: break else: print(number)
Please, Enter the Lowest Range Value: 14 Please, Enter the Upper Range Value: 97 The Prime Numbers in the range are: 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Заключение

В этом уроке мы показали, как написать код для печати простых чисел в заданном диапазоне чисел.

Источник

Какая функция нужна для нахождения простого числа в Python?

Для начала определимся с определением. Простое число - натуральное число, имеющее ровно два различных натуральных делителя: 1 и самого себя.

Напишем функцию, принимающую на вход число и проверяющую, является ли оно простым.

import math def is_prime(number): # список простых чисел начинается с 2, всё остальное можно сразу отмести if number  1: return False number_sqrt = int(math.sqrt(number)) divisors = range(2, (number_sqrt + 1)) # Если число не простое, то в отрезке от 1 до квадратного корня числа, точно будут его делители. for element in divisors: if number % element == 0: return False return True is_prime(0) # False is_prime(1) # False is_prime(2) # True is_prime(3) # True is_prime(4) # False 

Источник

Оцените статью