S. Простое множество

Вы почти у финиша! Осталось всего 2 задачи, и этот модуль будет полностью пройден.
А сейчас — проверим, умеете ли вы находить простые числа с помощью выражений на Python.

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

Вашему решению будет предоставлено множество numbers.

Продумайте выражение для генерации множества содержащего все простые числа из заданных.

Примечание

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

Подсказка:
Используйте еще одно списочное выражение для фильтрации.

Пример

Ввод

numbers = {1, 2, 3, 4, 5}

Вывод

{2, 3, 5}

Ввод

numbers = set(range(11, 50, 2))

Вывод

{37, 41, 11, 43, 13, 47, 17, 19, 23, 29, 31}

Решение

Для начала нам надо завернуть в списочное выражение поиск простого числа, который мы реализовали в серии задач с названием “Простая задача”. Основой этого решения служит цикл n % d != 0 for d in range(2, int(n ** 0.5) + 1).

Чтобы убедиться что все результаты вычислений не равны нулю, нам нужно завернуть это в функцию all(). таким образом мы получаем all(n % d != 0 for d in range(2, int(n ** 0.5) + 1))

Остается убедиться, что n > 1 и записать его в множество.

Существуют и другие способы проверить простое ли число после получения списка из показанной основы. Например, можно воспользоваться логически эквивалентным not any()not any(n % d == 0 for d in range(2, int(n ** 0.5) + 1)), остальные способыбудучи все еще эффективными усложняют читабельность.

Посмотреть код

Решение

Python
{n for n in numbers if n > 1 and all(n % d != 0 for d in range(2, int(n ** 0.5) + 1))}
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Владислав
Владислав
02.07.2025 16:09
{i for i in numbers if len([x for x in range(1, i + 1) if i % x == 0]) == 2}