Как найти простое число в списке?
Как можно найти простыe числa в последовательности десятичных, целых, отрицательных чисел и слов? я попробовал решить это таким образом:
def isPrime(n): if n % 2 == 0: return n == 2 d = 3 while d * d n print(isPrime(2.24))
и в данном примере выдает True, хотя 2.24 не простое число, то есть программа не рабочая и считает десятичные, отрицательные числа ВСЕ без исключения за простые А также выдает ошибку, когда встречает слово типа str()
Отслеживать
задан 4 дек 2020 в 11:20
17 9 9 бронзовых знаков
По определению простого числа — это натуральное число больше единицы. Натуральное число, в свою очередь, это целое число строго больше нуля. Поэтому ваш вопрос непонятен
4 дек 2020 в 11:25
@MaxU я знаю, но как исправить программу чтобы работала только для таких числ? просто она выполняет для всех числе в том числе отрицательных и десятичных
4 дек 2020 в 11:27
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
- проверить число на соответствие типу int
if isinstance(n, int) is False: return False
value = abs(n)
def isPrime(n): if isinstance(n, int) is False: return False value = abs(n) if value == 1: return False for i in range(2, int(value**0.5)): if value % i == 0: return False return True print(isPrime(2.24))
на счет отрицательных чисел — один момент с одной стороны конечно по определению простое число — это натуральное число строго большее 1, так что по идее надо проверку такую:
if value
и не париться с абсолютным значением, но иногда приходилось считать и отрицательные простыми числами (при использовании основной теоремы арифметики), вернее не считать, а использовать отрицательные как простые при разложении
хотя для не целых чисел я бы все таки выбрасывал исключение - логически наверное более правильно это
P.S.
кстати для простого числа есть и другое определение для которого код будет вот таким коротким, без проверки на 1 и отрицательные числа:
return len([i for i in range(1, n + 1) if n % i == 0]) == 2
Как получить простые числа
Вроде простая задача и все в коде понятно кроме самой логики определения простого числа. Код из книги:
def main(): # Локальная переменная number = 0 # Получить число number = int(input('Введите целое число: ')) # Показать информацию о том, является ли число простым if is_prime(number): print('Введенное вами число является простым.') else: print('Введенное вами число не является простым.') # Функция is_prime получает в качестве аргумента число и # возвращает True, если число простое, и False в противном случае. def is_prime(number): # Локальные переменные half = int(number / 2) status = True for count in range(2, half + 1): if number % count == 0: status = False return status # Вызвать главную функцию. main()
Почему переменной half присваивается целое значение половины введенного числа и потом half+1 используется как конец цикла?
Отслеживать
37.5k 4 4 золотых знака 28 28 серебряных знаков 77 77 бронзовых знаков
задан 21 окт 2022 в 20:15
user524738 user524738
5 3 3 бронзовых знака
Простое число - это число которое делится на 1 и на самого себя.
21 окт 2022 в 20:20
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
чтобы проверить что число простое в данном алгоритме он делится на все числа от 2 до int(number / 2) включительно (поэтому и half + 1 )
очевидно, что если число не делится на какое-то число в диапазоне 0 ..number / 2 , то оно не делится на любое числа в диапазоне number / 2 .. number и поэтому проверять на делимость дальше не нужно
ведь если число a делится на число b из диапазона number / 2 .. number :
c = a / b
то оно делится и на число c из диапазона 0 ..number / 2
Но это неоптимальный алгоритм, потому что достаточно проверить все числа в диапазоне 2 .. sqrt(number) и если число не делится ни на одно число из этого диапазона, то оно простое.
На этом принципе основано решето Эратосфена поиска простых чисел - когда вы рассматриваете только sqrt(n) чисел чтобы найти все простые числа до n
P.S.
по хорошему надо проверить делимость на 2, а дальше в диапазоне проверять только нечётные числа
а еще как только найден делитель - не надо проверять остальные числа и так понятно, что число составное и можно выходить
def is_prime(number): if number % 2 == 0: return number == 2 # Локальные переменные sqrt_num = int(number**.5) for count in range(3, sqrt_num + 1, 2): if number % count == 0: return False return True
Проверка числа на простоту
Программа принимает на вход число и проверяет, простое оно или нет.
Решение задачи
- Принимаем на вход число и записываем его в отдельную переменную.
- Инициализируем переменную, которая будет выполнять роль счетчика, значением 0 .
- Организуем цикл for в диапазоне от 2 до значения проверяемого числа, деленного на 2 (речь идет, конечно, о целочисленном делении).
- Затем находим количество делителей нашего числа. При помощи условного оператора if мы проверяем, делится ли число без остатка, и затем, если делится, увеличиваем наш счетчик на единицу.
- Если число делителей равно 0 , то проверяемое число является простым.
- Выводим результат на экран.
- Конец.
Исходный код
Ниже дан исходный код, который осуществляет проверку числа на простоту. Результаты работы программы также даны ниже.
a = int(input("Введите число: ")) k = 0 for i in range(2, a // 2+1): if (a % i == 0): k = k+1 if (kОбъяснение работы программы
- Пользователь вводит число, и оно сохраняется в переменную a .
- Инициализируем переменную k значением 0 . Эта переменная будет выполнять роль счетчика.
- Запускаем цикл for в диапазоне от 2 до значения проверяемого числа, деленного на 2 (речь идет, конечно, о целочисленном делении). Напоминаем, что само число и 1 делителями мы считать не будем.
- Затем, при помощи инструкции if , на каждой итерации цикла мы проверяем, делится ли наше число без остатка на числа из выбранного диапазона цикла. Если делится, то переменная k , выполняющая роль счетчика, увеличивается на единицу.
- Если число делителей равно 0 , то проверяемое число является простым.
- Выводим полученный результат на экран.
Результаты работы программы
Пример 1: Введите число: 7 Число простое Пример 2: Введите число: 35 Число не является простымЕще более 50 задач на числа в нашем телеграм канале Python Turbo. Уютное сообщество Python разработчиков.
Как определить простое число в Python: простые шаги и решения для начинающих
В приведенном примере, функция is_prime проверяет, является ли число простым, путем деления его на все числа от 2 до корня из этого числа. Если число делится на какое-либо из этих чисел без остатка, оно считается составным, в противном случае - простым. Важно помнить, что число 1 не является простым числом.
Детальный ответ
Как определить простое число в Python
Простые числа - это числа, которые имеют только два делителя: 1 и само число. Они являются базовым элементом в математике и широко используются в алгоритмах и криптографии. В этой статье мы рассмотрим, как определить, является ли число простым или нет, с помощью языка программирования Python.
Метод проверки на простоту
Существует несколько методов для проверки чисел на простоту. Вот один из самых простых и эффективных методов:
def is_prime(n): if n < 2: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True
- Сначала мы проверяем, является ли число n меньше 2. Если это так, то число не является простым и возвращаем False.
- Затем мы проходим циклом от 2 до квадратного корня из n (включительно) и проверяем, делится ли n на текущее число. Если делится, то число не является простым и возвращаем False.
- Если ни одно из условий не выполнено, то число является простым и мы возвращаем True.
Пример использования
Теперь, когда у нас есть метод для определения простого числа, мы можем его использовать в наших программах. Вот пример использования:
number = int(input("Введите число: ")) if is_prime(number): print(number, "является простым числом") else: print(number, "не является простым числом")
В этом примере мы запрашиваем число у пользователя, затем используем функцию is_prime для проверки, является ли оно простым. Затем выводим сообщение в зависимости от результата проверки.
Заключение
В этой статье мы рассмотрели, как определить простое число в языке программирования Python. Мы изучили простой и эффективный метод проверки на простоту и показали пример использования. Теперь у вас есть инструменты, чтобы легко определять простые числа в ваших программах.